与这篇文章类似:在不同的 pandas 数据帧中找到调和平均值的有效函数我有两个形状相同的 Pandas 数据帧,我想找到每对元素的调和平均值——一个来自同一位置的每个数据帧。该帖子中给出的解决方案是使用面板,但现在已弃用。
如果我这样做:
import pandas as pd
import numpy as np
from scipy.stats.mstats import hmean
df1 = pd.DataFrame(dict(x=np.random.randint(5, 10, 5), y=np.random.randint(1, 6, 5)))
df2 = pd.DataFrame(dict(x=np.random.randint(5, 10, 5), y=np.random.randint(1, 6, 5)))
dfs_dictionary = {'DF1':df1,'DF2':df2}
df=pd.concat(dfs_dictionary)
print(df)
x y
DF1 0 9 4
1 6 4
2 7 2
3 5 2
4 5 2
DF2 0 9 2
1 7 1
2 7 1
3 9 5
4 8 3
x = df.groupby(level = 1).apply(hmean, axis = None).reset_index()
print(x)
index 0
0 0 4.114286
1 1 2.564885
2 2 2.240000
3 3 3.956044
4 4 3.453237
我只得到一列值。为什么?根据原始 df,我期望有两列,一列用于 x 值的 hmean,另一列用于 y 值的 hmean。我怎样才能实现我想做的事情?