首页 > 解决方案 > Dataframe.update() 中的“join”参数

问题描述

我正在尝试与另一个更新数据框。我注意到“更新”只更新匹配列的值,而不是从另一个框架添加新列。无论如何要执行这两个功能:更新值并添加新列?

import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [400, 500, 600]})
new_df = pd.DataFrame({'B': [4, 5, 6],'C': [7, 8, 9]})
df.update(new_df, join='left')

更新df没有“C”列。为什么这样?究竟是join='left'做什么的?

标签: python-3.xdataframe

解决方案


join='left'是默认且仅当前(截至 Pandas 0.23)实现的模式。根据文档

只实现了左连接,保留了原始对象的索引和列。

因此,您需要分两步完成任务:更新并单独添加新列——手动或使用df.join()

df.join(new_df, rsuffix='_new')

或者只是使用循环new_df.columns并检查if column in df.


推荐阅读