我有以下数据框:
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
有没有一种简单的方法可以实现这一目标?
提前致谢!
答案 0 :(得分:3)
您可以使用concat
和groupby
轴= 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