python-3.x - 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'
做什么的?
解决方案
join='left'
是默认且仅当前(截至 Pandas 0.23)实现的模式。根据文档:
只实现了左连接,保留了原始对象的索引和列。
因此,您需要分两步完成任务:更新并单独添加新列——手动或使用df.join()
:
df.join(new_df, rsuffix='_new')
或者只是使用循环new_df.columns
并检查if column in df
.