首页 > 解决方案 > 如何将数据框中的某些行替换为其他数据框中的相应行以及其他列

问题描述

假设我有两个数据框:

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许多附加列,因此要使用/创建的列的任何手动定义都将非常麻烦。

标签: pythonpandas

解决方案


让我们使用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

推荐阅读