通过取列之间的平均值合并Pandas中的两个数据帧

时间:2018-05-13 01:38:55

标签: python pandas dataframe

我有以下数据框:

DF1

          C1    C2     C3
    0     0     0      0
    1     0     0      0

DF2

          C1    C4     C5
    0     1     1      1
    1     1     1      1

我要找的结果是:

DF3

          C1    C2     C3    C4    C5
    0     0.5    0      0     1     1
    1     0.5    0      0     1     1

有没有一种简单的方法可以实现这一目标?

提前致谢!

2 个答案:

答案 0 :(得分:3)

您可以使用concatgroupby轴= 1

s=pd.concat([df1,df2],axis=1)
s.groupby(s.columns.values,axis=1).mean()
Out[116]: 
    C1   C2   C3   C4   C5
0  0.5  0.0  0.0  1.0  1.0
1  0.5  0.0  0.0  1.0  1.0

@cᴏʟᴅsᴘᴇᴇᴅ

的不错选择
s.groupby(level=0,axis=1).mean()
Out[117]: 
    C1   C2   C3   C4   C5
0  0.5  0.0  0.0  1.0  1.0
1  0.5  0.0  0.0  1.0  1.0

答案 1 :(得分:2)

DataFrame.add

df3 = df2.add(df1, fill_value=0)
df3[df1.columns.intersection(df2.columns)] /= 2

    C1   C2   C3   C4   C5
0  0.5  0.0  0.0  1.0  1.0
1  0.5  0.0  0.0  1.0  1.0

concat + groupby

pd.concat([df1, df2], axis=1).groupby(axis=1, level=0).mean()
    C1   C2   C3   C4   C5
0  0.5  0.0  0.0  1.0  1.0
1  0.5  0.0  0.0  1.0  1.0