Pandas(Python)-使用条件从另一个更新数据框的列

发布于 2021-01-29 14:10:50

我遇到问题,找到了解决方案,但我觉得这是错误的方法。也许,有一种更“规范”的方式来做到这一点。

问题

我有两个要合并的数据框,而没有多余的列,也没有擦除现有的信息。范例:

现有数据框(df)

   A  A2  B
0  1   4  0
1  2   5  1

要合并的数据框(df2)

   A  A2  B
0  1   4  2
1  3   5  2

我想更新dfdf2是否列“A”和“A2”相对应。结果将是(:

   A  A2    B
0  1   4  2.0 <= Update value ONLY
1  2   5  1.0

这是我的解决方案,但我认为这不是一个很好的解决方案。

import pandas as pd

df = pd.DataFrame([[1,4,0],[2,5,1]],columns=['A','A2','B'])

df2 = pd.DataFrame([[1,4,2],[3,5,2]],columns=['A','A2','B'])

df = df.merge(df2,on=['A', 'A2'],how='left')
df['B_y'].fillna(0, inplace=True)
df['B'] = df['B_x']+df['B_y']
df = df.drop(['B_x','B_y'], axis=1)
print(df)

有谁有更好的方法吗?谢谢 !

关注者
0
被浏览
228
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    是的,无需合并即可完成:

    rows = (df[['A','A2']] == df2[['A','A2']]).all(axis=1)
    df.loc[rows,'B'] = df2.loc[rows,'B']
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看