使用基于索引的另一个数据帧覆盖pandas数据帧中的某些行

问题描述 投票:2回答:1

我有一个pandas数据帧,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
python pandas dataframe
1个回答
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

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

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
© www.soinside.com 2019 - 2024. All rights reserved.