2017-08-09 115 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

相關問題