如何在Pandas中合并两个DataFrame并对共列取均值?
当然有超简便的方法实现这个需求!用 pandas 的内置方法就能一行代码搞定,核心思路是先把两个 DataFrame 按索引堆叠,再对同一索引的行求平均值。
实现步骤
- 先构造你的两个 DataFrame(如果已经有了可以跳过这步):
import pandas as pd df1 = pd.DataFrame({'C1': [0, 0], 'C2': [0, 0], 'C3': [0, 0]}) df2 = pd.DataFrame({'C1': [1, 1], 'C4': [1, 1], 'C5': [1, 1]})
- 一行代码生成目标结果:
df3 = pd.concat([df1, df2]).groupby(level=0).mean()
原理解释
pd.concat([df1, df2]):把两个 DataFrame 按行堆叠,这样每个索引(0 和 1)都会对应两行数据——一行来自 df1,一行来自 df2。.groupby(level=0).mean():按索引分组,对每组的所有列计算平均值。对于 C2、C3 这类只在 df1 里有的列,以及 C4、C5 这类只在 df2 里有的列,分组后每组只有一个值,平均值就是它本身;而共同列 C1 每组有两个值(0 和 1),平均值正好是你想要的 0.5。
运行后得到的 df3 就是你期望的结果:
C1 C2 C3 C4 C5 0 0.5 0 0 1 1 1 0.5 0 0 1 1
如果需要调整列的顺序,只需要用 df3 = df3[['C1', 'C2', 'C3', 'C4', 'C5']] 重新指定即可。
内容的提问来源于stack exchange,提问作者Vasil Yordanov
相关产品推荐
相关产品推荐

