如何通过另一DataFrame的索引和列更新pandas DataFrame
实现方案
方法1:直接调用pandas内置update方法(修改原df1)
pandas的update方法会自动对齐两个DataFrame的索引和列名,仅用df2的数值覆盖df1的对应匹配位置,不匹配位置保留原值,完全符合需求,代码如下:
# 运行你给出的df1、df2生成代码后,执行下面这行即可完成替换 df1.update(df2) # 此时df1就是最终结果,索引和列顺序和原始df1完全一致 print(df1)
方法2:生成新DataFrame(不修改原df1、df2)
如果需要保留原始数据不变,可以用reindex方法将df2对齐到df1的行列结构,缺失位置填充0:
# 直接生成符合要求的结果对象 result = df2.reindex(index=df1.index, columns=df1.columns, fill_value=0) print(result)
补充说明
- 由于初始df1由
np.zeros生成,默认是float类型,如果你需要结果为整数格式,可在更新完成后添加代码df1 = df1.astype(int)做类型转换即可。
内容的提问来源于stack exchange,提问作者Claire Wang
相关产品推荐
相关产品推荐

