python-查找跨不同熊猫数据帧的谐波均值的高效函数

我有几个形状/类型相同但数值略有不同的数据框.我可以通过所有输入数据框的平均值轻松生成一个新的数据框:

df = pd.concat([input_dataframes])
df = df.groupby(df.index).mean()

我想对谐波均值(可能是scipy.stats.hmean函数)执行相同的操作.我尝试使用以下方法执行此操作:

.groupby(df.index).apply(scipy.stats.hmean)

但这改变了数据帧的结构.有没有更好的方法可以做到这一点,还是我需要使用更长的时间/手动的实现方式?

为了显示 :

df_input1:
   'a' 'b' 'c'
'x' 1   1   2 
'y' 2   2   4 
'z' 3   3   6

df_input2:
   'a' 'b' 'c'
'x' 2   2   4 
'y' 3   3   6 
'z' 4   4   8

desired output (but w/ hmean):
   'a'  'b'  'c'
'x' 1.5  1.5  3 
'y' 2.5  2.5  5 
'z' 3.5  3.5  7

解决方法:

创建一个熊猫面板,并在“ item”轴上应用泛音均值函数.

数据框df1和df2的示例:

import pandas as pd
from scipy import stats

d = {'1':df1,'2':df2}
pan = pd.Panel(d)
pan.apply(axis='items',func=stats.hmean)

产量:

        'a'         'b'         'c'
'x'     1.333333    1.333333    2.666667
'y'     2.400000    2.400000    4.800000
'z'     3.428571    3.428571    6.857143
上一篇:如何更快地读取/遍历/切片Scipy稀疏矩阵(LIL,CSR,COO,DOK)?


下一篇:python-熊猫:将系列字典保存到磁盘