2017-06-18 54 views
0

假設我有兩個數據幀,如下所示的df1,df2。 DF1:通過公共列值將一個數據幀列值賦值給另一個值

A B C 
0 4 40 300 
1 2 70 900 
2 5 80 900 

和另一數據幀DF2:

A D E 
0 1 0 00 
1 2 0 00 
2 3 0 00 
3 4 0 00 
4 5 0 00 
5 6 0 00 

現在我要分配柱DF1 [ 'C']的值,以DF2 [ 'E']由A列匹配的條件。結果應該是

A D E 
0 1 0 00 
1 2 0 900 
2 3 0 00 
3 4 0 300 
4 5 0 900 
5 6 0 00 

我該怎麼做?

注:我正在尋找更新df2而不是合併,因爲我必須在循環中多次執行此操作。

回答

0

可以使用合併功能。

df2 =pd.merge(df2,df1,on='A',how='left') 
df2 = df2.fillna(value='00') 
df2 = df2[['A','D','C']].rename(columns={'C': 'E'}) 
print(df2) 
    A D E 
0 1 0 00 
1 2 0 900 
2 3 0 00 
3 4 0 300 
4 5 0 900 
5 6 0 00 
0

您可以使用pd.merge()

pd.merge(df2[['A','D']],df1[['A']].assign(E=df1.C),on='A',how='left').fillna('00') 

Out[269]: 
    A D E 
0 1 0 00 
1 2 0 900 
2 3 0 00 
3 4 0 300 
4 5 0 900 
5 6 0 00 

或者你可以使用df.update()

df2_new = df2.set_index('A') 
df2_new.update(df1.assign(E=df1.C).set_index('A')) 
df2_new.reset_index() 
Out[254]: 
    A D E 
0 1 0 00 
1 2 0 900 
2 3 0 00 
3 4 0 300 
4 5 0 900 
5 6 0 00 
相關問題