如何在熊猫中平均两个数据帧?

时间:2018-03-27 14:00:53

标签: python pandas

我有两个看起来像这样的数据框:

c453    1   8268    loc.00001   .   +   1  2  3 5  6 
c453    1   8268    loc.00002   .   +   1  1  4 5  8 
c453    1   8268    loc.00003   .   +   1  1  4 9  8 


c453    1   8268    loc.00001   .   +   2  3  3 2  6 
c453    1   8268    loc.00002   .   +   1  1  4 5  4 
c453    1   8268    loc.00003   .   +   1  1  4 9  8 

我希望对这两个文件进行平均以提供以下输出:

c453    1   8268    loc.00001   .   +   1.5  2.5  3 3.5  6 
c453    1   8268    loc.00002   .   +   1  1  4 5  6 
c453    1   8268    loc.00003   .   +   1  1  4 9  8 

我想在熊猫中这样做,因为我不熟悉使用熊猫。连接我可以做的两个文件,但从那里停留。任何帮助都会有用。

2 个答案:

答案 0 :(得分:1)

我认为需要concat使用汇总mean,如果前4列,如果重复df1df2中前4列中的行,则需要:

df = pd.concat([df1, df2]).groupby(df.columns.tolist()[:4]).mean()

如果没有,请将set_indexadd一起使用并除以2

a = df1.set_index(df.columns.tolist()[:4])
b = df1.set_index(df.columns.tolist()[:4])
c = a.add(b).div(2).reset_index()

答案 1 :(得分:1)

不要连接,这只会让事情变得混乱。两个值的平均值是除以2的总和:

df1.set_index(['A', 'B', 'C'], inplace=True)
df2.set_index(['A', 'B', 'C'], inplace=True)
avg = (df1[['D', 'E']] + df2[['D', 'E']]) / 2

假设“关键”列是A / B / C,数据列是D / E.