当前代码输出两列
*_x
和*_y
如果列名称相同,我想要的是保留第二个数据帧覆盖第一个数据帧
例如:
import pandas as pd
data1 = [
['A',10],
['B',11],
['C',12],
['D',13]
]
data2 = [
['B',2],
['D',3]
]
df1 = pd.DataFrame(data1,columns=['name','value'])
df2 = pd.DataFrame(data2,columns=['name','value'])
df3 = pd.merge(df1,df2,on='name',how='outer')
print(df3)
当前输出为:
name value_x value_y
0 A 10 NaN
1 B 11 2.0
2 C 12 NaN
3 D 13 3.0
预期:
name value
0 A 10
1 B 2
2 C 12
3 D 3
就像使用第二个数据帧覆盖第一个数据帧一样。还有其他比合并更好的方法吗?
尝试组合_first():
df2.set_index('name').combine_first(df1.set_index('name')).reset_index()