Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 一种干净高效的数据帧单元更新方法_Python_Pandas - Fatal编程技术网

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