python - 如何将数据框中的某些行替换为其他数据框中的相应行以及其他列
问题描述
假设我有两个数据框:
df1 = pd.DataFrame({'A': [0, 1, 2, 3],
'B': [300, 400, 500, 600],
'C': [6, 7, 8, 9]})
df1.set_index('A', inplace=True)
df2 = pd.DataFrame({'A': [2, 3],
'B': [433, 555],
'C': [99, 99],
'D': [1, 2]})
df2.set_index('A', inplace=True)
我想根据索引df1
用行替换行。df2
我的第一次尝试是:
df1.update(df2)
df1.loc[df2.index, :] = df2
但是,它只替换在 中删除的列,df1
而不是D
从 中添加列df2
。如何添加D
列以及NaN
其他行的值?
请注意,我的原始数据框有数百列,而原始数据框有df2
许多附加列,因此要使用/创建的列的任何手动定义都将非常麻烦。
解决方案
让我们使用pd.DataFrame.combine_first
:
df2.combine_first(df1)
输出:
B C D
A
0 300.0 6.0 NaN
1 400.0 7.0 NaN
2 433.0 99.0 1.0
3 555.0 99.0 2.0