我有一个问题并找到了解决方案,但我感觉这不是正确的方法。也许有更多“规范”的方法。
问题
我有两个数据框,想要合并它们,而不需要额外的列,并且不会删除现有的信息。例如:
现有数据框(df)
A A2 B
0 1 4 0
1 2 5 1
要合并的数据框(df2)
A A2 B
0 1 4 2
1 3 5 2
如果'A'和'A2'列相应的话,我想用'df2'更新'df'。结果如下(:):
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)
有没有更好的方法呢? 谢谢!
values = (df[[SITE_IP,PORT_NAME]] == dfLags[[SITE_IP,PORT_NAME]]).all(axis=1)
- Lucas Aimarettodf3 = df.copy(); df3.index = ['G', 'H']
,比较df[['A','A2']] == df3[['A','A2']]
会产生相同的错误。因此,即使具有相同的形状,也无法进行有效的比较。也许一些利用广播的 numpy 技巧可以在这里帮助解决问题。 - Quickbeam2k1