2017-08-09 117 views
2

我正在使用Pandas DataFrames并希望在两个数据帧之间取平均值。我正在寻找具有相同名称的列之间的意思。 例如Pandas通过列之间的平均值合并两个数据帧

DF1

time  x y  z 
0  1 1.25 2.5 0.75 
1  2 2.75 2.5 3.00 
2  3 1.50 2.5 1.25 
3  4 3.00 2.5 3.50 
4  5 0.50 2.5 2.25 

DF2

time  x y  z 
0  2 0.75 2.5 1.75 
1  3 3.00 2.5 3.00 
2  4 1.25 2.5 0.25 
3  5 3.50 2.5 2.00 
4  6 2.25 2.5 2.25 

,我期待的结果是

DF3

time  x y  z 
0  1 1.25 2.5 0.75 
1  2 1.75 2.5 2.375 
2  3 2.25 2.5 2.125 
3  4 2.125 2.5 1.875 
4  5 2.00 2.5 2.125 
5  6 2.25 2.5 2.25 

Pandas中有一种简单的方法,我可以使用合并函数或类似方法执行此操作吗? 我正在寻找一种方法,而不必指定列的名称。

回答

2

我想你需要concat + groupby和聚集mean

df = pd.concat([df1, df2]).groupby('time', as_index=False).mean() 
print (df) 
    time  x y  z 
0  1 1.250 2.5 0.750 
1  2 1.750 2.5 2.375 
2  3 2.250 2.5 2.125 
3  4 2.125 2.5 1.875 
4  5 2.000 2.5 2.125 
5  6 2.250 2.5 2.250 
+0

会pd.merge(DF1,DF2,left_index =真,right_index =真,如何= '外')意味着(轴= 1 )也一样,还是我误解了? – Uvar

+1

@Uvar - 不幸的是,因为在合并之后获得列 - ['time_x','x_x','y_x','z_x','time_y','x_y','y_y','z_y']' – jezrael

+1

谢谢!我曾尝试过,但忘记了方括号[]围绕df1,df2 @jezrael – candid

相关问题