python - Pandas 有条件地替换或更新整行

标签 python pandas

我有以下 df:

    Name    Status   Data
0   Mike    yes      123
1   Bob     no       456
2   Ted     yes      789
3   Fred    yes

现在我有了一个新的df:

0 Mike no 345
1 Fred no 123

如何更新第一个 df 以反射(reflect)更改?这是替换函数还是合并函数?

输出:

    Name    Status   Data
0   Mike    no       345
1   Bob     no       456
2   Ted     yes      789
3   Fred    no       123

最佳答案

使用更新合并
注意:我将 df 限制为我想用双括号合并的列,以确保我的结果保持数据帧 df[['Name']]。然后我使用 dfn 进行左合并以添加我想要更新的列。 'left' 确保我获得与 df 相同的索引,并且可以毫无问题地愉快地更新

df.update(df[['Name']].merge(dfn, 'left'))
df

   Name Status   Data
0  Mike     no  345.0
1   Bob     no  456.0
2   Ted    yes  789.0
3  Fred     no  123.0

建议

如果要使用'Name'作为索引,将其设置为索引。

df = df.set_index('Name')
dfn = dfn.set_index('Name')

然后这变成了

pd.DataFrame.combine_first

流水线副本

dfn.combine_first(df)

     Status   Data
Name              
Bob      no  456.0
Fred     no  123.0
Mike     no  345.0
Ted     yes  789.0

pd.DataFrame.update

到位

df.update(dfn)
df

     Status   Data
Name              
Bob      no  456.0
Fred     no  123.0
Mike     no  345.0
Ted     yes  789.0

关于python - Pandas 有条件地替换或更新整行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49801834/

相关文章:

c++ - 通过引用从 Python 调用 C++ 函数

python - Pandas ,在字符串中打印变量

python - 如何绘制时间序列,其中 x 轴是 matplotlib 中的 datetime.time 对象?

python - 计算字符串中的字符串

python - 返回多列中 pandas 的所有重复项

python - 选择内层索引数据

python - 拆分/提取 Pandas 系列索引中的字符串并扩展为 DataFrame

python - 使用 Python 两次溢出列

python - 使用 pandas 对象进行算术

python - 从另一个字典值分配字典值