向Pandas DataFrame添加字典数据:覆盖值且保留索引
解决Pandas合并时覆盖重复索引、新增行和列的问题
直接通过concat合并后按索引分组保留最新值,就能同时实现覆盖重复索引、新增行和列的需求,具体步骤如下:
- 先合并原DataFrame与新数据DataFrame:
combined = pd.concat([df, new_data_df])
- 按行索引分组,取每组最后一行数据(新数据在合并序列的后方,会自动覆盖原有索引的旧值):
final_df = combined.groupby(combined.index).last()
效果验证
执行上述代码后,输出结果会满足所有需求:
dog、fish的重复索引旧值被新数据覆盖- 新行
new_row被添加 - 新列
something_new被保留,缺失值自动填充为NaN
打印final_df的结果:
wings specimen legs something_new falcon 2 10.0 2.0 NaN dog 45 89.0 4.0 NaN spider 0 1.0 8.0 NaN fish 55555 8.0 0.0 new value new_row 90 NaN NaN NaN
如果需要将缺失值统一填充(比如填0),可追加一步:
final_df = final_df.fillna(0)
另一种简洁写法
也可以用combine_first反向操作实现同样效果,代码更简洁:
final_df = new_data_df.combine_first(df)
内容的提问来源于stack exchange,提问作者JFerro
相关产品推荐
相关产品推荐

