2016-04-12 94 views
1

我有2個熊貓數據框。第二個包含在第一個中。我如何將第一個中的值替換爲第二個中的值?用另一個數據幀更新值

考慮這個例子:

df1 = pd.DataFrame(0, index=[1,2,3], columns=['a','b','c']) 
df2 = pd.DataFrame(1, index=[1, 2], columns=['a', 'c']) 

ris= [[1, 0, 1], 
     [1, 0, 1], 
     [0, 0, 0]] 

risd1

相同的索引和列一個可能的解決方案是:

for i in df2.index: 
    for j in df2.columns: 
    df1.loc[i, j] = df2.loc[i, j] 

但這是醜陋的

回答

1

我認爲你可以使用copycombine_first

df3 = df1.copy() 
df1[df2.columns] = df2[df2.columns] 
print df1.combine_first(df3) 
    a b c 
1 1.0 0 1.0 
2 1.0 0 1.0 
3 0.0 0 0.0 

下一個解決方案是創建新的空DataFramedf4indexcolumnsdf1並由雙重填寫combine_first

df4 = pd.DataFrame(index=df1.index, columns=df1.columns) 
df4 = df4.combine_first(df2).combine_first(df1) 
print df4 
    a b c 
1 1.0 0.0 1.0 
2 1.0 0.0 1.0 
3 0.0 0.0 0.0 
0

嘗試

In [7]: df1['a'] = df2['a'] 

In [8]: df1['c'] = df2['c'] 

In [14]: df1[['a','c']] = df2[['a','c']] 

如果列名不知道:

In [25]: for col in df2.columns: 
    ....:  df1[col] = df2[col] 
+0

考慮具有多列的情況 – Donbeo

相關問題