我想内部合并两个都有相同名称的列的两个dataFrame。在同名的列上,我不希望在合并的dataFrame中使用带后缀的新列,而是希望将它们分组在一起并应用聚合函数(在此示例中为sum)
拥有:
d1:
col1
0 1
1 2
d2:
col1
0 3
2 5
与pd.merge(d1, d2, how='inner', left_index=True, right_index=True)
获取:
col1_x col1_y
0 1 3
但想要:
col1
0 4
答案 0 :(得分:2)
使用:
print (d1)
col1 col3
0 1 6
1 2 3
print (d2)
col1 col2
0 3 2
2 5 4
您的解决方案-通过拆分的列名称添加groupby
并汇总sum
:
df = pd.merge(d1, d2, how='inner', left_index=True, right_index=True)
df = df.groupby(lambda x: x.split('_')[0], axis=1).sum()
#alternative
#df = df.groupby(df.columns.str.split('_').str[0], axis=1).sum()
在此,按列分别使用join='inner'
和sum
中的concat
:
df = pd.concat([d1, d2], axis=1, join='inner').sum(level=0, axis=1)
print (df)
col1 col3 col2
0 4 6 2