根据索引使用来自另一个数据框的行覆盖pandas数据框中的某些行

时间:2019-02-24 14:58:11

标签: python pandas dataframe

我有一个熊猫数据框df1。

我想用索引和列名匹配的df2中的值覆盖其值。

我在此站点上找到了一些答案,但没有什么能完全满足我的要求。

df1

   A   B   C
0  33  44  54
1  11  32   54
2  43  55  12
3  43  23  34

df2
   A
0  5555

输出

   A   B   C
0  5555  44  54
1  11  32   54
2  43  55  12
3  43  23  34

1 个答案:

答案 0 :(得分:2)

如有必要,可以使用combine_first并将其转换为整数:

df = df2.combine_first(df1).astype(int)
print (df)
      A   B   C
0  5555  44  54
1    11  32  54
2    43  55  12
3    43  23  34

如果需要检查两个DataFrame之间的交点索引和列:

df2= pd.DataFrame({'A':[5555, 2222],
                   'D':[3333, 4444]},index=[0, 10])

idx = df2.index.intersection(df1.index)
cols = df2.columns.intersection(df1.columns)

df = df2.loc[idx, cols].combine_first(df1).astype(int)
print (df)
      A   B   C
0  5555  44  54
1    11  32  54
2    43  55  12
3    43  23  34