假设我有一系列我希望通过Cat聚合的数据
Cat Volume Result
A 45 4
A 57 3
B 56 3
C 45 1
C 55 2
我想通过cat来汇总音量的变化,偏斜和峰值以及结果的最大值。我知道如何通过计算体积的方差,偏度和峰度来逐一进行,但我想用这样的东西整齐地做它
def f(row):
row['ResultM']=row['Result'].max()
row['Variance'] = pd.DataFrame(scipy.stats.moment(row['Volume'], moment=[2,3,4]))
return
TestData=OrgData.groupby('Id').apply(f)
但它不起作用。任何人都可以提供如何更正我的代码的建议吗?感谢
答案 0 :(得分:0)
def f(x):
df = pd.DataFrame(scipy.stats.moment(x.Volume.astype(int),moment=[2,3,4]),index=['var','skew','kurtosis']).T
df['result_max'] = x.Result.astype(int).max()
return df
df.groupby('Cat').apply(f)
我们试试这个:
from scipy import stats
OrgData.groupby('Cat').agg({'Result':'max','Volume':[stats.skew,np.var,stats.kurtosis]})
输出:
Result Volume
max skew var kurtosis
Cat
A 4 0 72.0 -2
B 3 0 NaN -3
C 2 0 50.0 -2