内部合并具有相同列名的dataFrame并应用聚合函数

时间:2019-01-26 07:46:25

标签: python pandas dataframe

我想内部合并两个都有相同名称的列的两个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

1 个答案:

答案 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