Python 一种干净高效的数据帧单元更新方法
我正在寻找一种更干净的方法来实现以下目标: 我有一个带有特定列的数据框,如果新信息到达,我想更新这些列。熊猫Python 一种干净高效的数据帧单元更新方法,python,pandas,Python,Pandas,我正在寻找一种更干净的方法来实现以下目标: 我有一个带有特定列的数据框,如果新信息到达,我想更新这些列。熊猫数据帧中的“新信息”(来自CSV文件)可以有更多或更少的行,但是,我只想添加 原始数据帧 具有新信息的数据帧 (注意此处缺少的名称“c”,以及名称“a”的“状态”变化) 现在,我编写了以下“不方便”的代码,用新信息更新原始数据帧 基于“名称”列更新“状态”列 这正是我想要的,但它既不好看也不高效,我希望有一个更干净的方法。我尝试了pd.merge方法,但问题是它会添加新列,而不是“更
数据帧中的“新信息”(来自CSV文件)可以有更多或更少的行,但是,我只想添加
原始数据帧
具有新信息的数据帧
(注意此处缺少的名称“c
”,以及名称“a
”的“状态”变化)
现在,我编写了以下“不方便”的代码,用新信息更新原始数据帧
基于“名称”列更新“状态”列
这正是我想要的,但它既不好看也不高效,我希望有一个更干净的方法。我尝试了pd.merge
方法,但问题是它会添加新列,而不是“更新”该列中的单元格
pd.merge(left=df_base, right=df_upd, on=['name'], how='left')
我期待着您的提示和想法。您可以设置索引(“名称”)
,然后拨打:
一般来说,您可以将索引设置为任何合适的值,进行更新,然后根据需要进行重置 如果name
是您想要用来“标识”行的列,您能将其作为索引吗?太好了,谢谢!对不起,我不知道更新功能
pd.merge(left=df_base, right=df_upd, on=['name'], how='left')
>>> df_base = df_base.set_index("name")
>>> df_upd = df_upd.set_index("name")
>>> df_base.update(df_upd)
>>> df_base
status
name
a 0
b 1
c 0
d 1