Python 3.x 熊猫通过获取列之间的平均值来合并两个数据帧
我正在使用Pandas数据帧,并希望在两个数据帧之间取平均值。我希望取同名列之间的平均值。 比如说 df1Python 3.x 熊猫通过获取列之间的平均值来合并两个数据帧,python-3.x,pandas,dataframe,group-by,concat,Python 3.x,Pandas,Dataframe,Group By,Concat,我正在使用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
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中有没有一种简单的方法可以做到这一点,使用merge函数或类似的函数?
我正在寻找一种不必指定列名称的方法。我认为您需要+和聚合:
pd.merge(df1,df2,left_index=True,right_index=True,how='outer').mean(axis=1)也会这样做吗?或者我在这里弄错了?@Uvar-不幸的不是,因为在
merge
-['time_x',x_x',y_x',z_x',time_y',x_y',z_y']
谢谢!我试过了,但忘记了df1、df2周围的方括号[]@jezrael@Uvar您的操作只剩下一列。0 1.56250 1 2.71875 2 2.03125 3 3.25000 4 2.90625那么我确实错了。感谢您提供的额外见解!:)
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