pandas 合并数据框但保留相同的列

问题描述 投票:0回答:1

当前代码输出两列

*_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    

就像使用第二个数据帧覆盖第一个数据帧一样。还有其他比合并更好的方法吗?

pandas
1个回答
0
投票

尝试组合_first():

df2.set_index('name').combine_first(df1.set_index('name')).reset_index()
© www.soinside.com 2019 - 2024. All rights reserved.