一个数据帧的更新列我有一个问题,我找到了一个解决办法,但我觉得这是错误的方式来做到这一点。也许,有一个更“规范”的方式来做到这一点。熊猫(蟒蛇) - 从另一个与条件和不同的列
我已经had an answer for a really similar problem,但在这里我没有在每个数据帧行的量相同。对不起,“双后”,但第一个仍然有效,所以我认为最好是做一个新的。
问题
我有两个数据框,我想,而无需额外的列,但不删除现有的相关信息进行合并。例如:
现有数据帧(DF)
A A2 B
0 1 4 0
1 2 5 1
2 2 5 1
数据帧合并(DF2)
A A2 B
0 1 4 2
1 3 5 2
我想与df2
更新df
如果列 'A' 和 'A2' 对应。 其结果将是:
A A2 B
0 1 4 2 <= Update value ONLY
1 2 5 1
2 2 5 1
这里是我的解决方案,但我认为这不是一个非常好的一个。
import pandas as pd
df = pd.DataFrame([[1,4,0],[2,5,1],[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)
我试过这个解决方案:
rows = (df[['A','A2']] == df2[['A','A2']]).all(axis=1)
df.loc[rows,'B'] = df2.loc[rows,'B']
但我因为错误的行数的这个错误:
ValueError: Can only compare identically-labeled DataFrame objects
有没有人有一个更好的办法呢? 谢谢!
谢谢!不是那么容易,但我会分析/学习/使用这个:D – Lerenn