我想在分组后计算数据帧上的std。
df2 = df.groupby(level='Index').agg(np.std).dropna(how='all')
一切都很好,但我不知道如何将参数ddof=1
传递给np.std
我想在我执行操作的函数中执行此操作...
operation = ['mean','std']
for i in range(0,len(operation)):
df2 = df.groupby(level='Index').agg(operation[i]).dropna(how='all')
....
是否可以将'mean'
和'std'
替换为np.mean
和np.std
,其中ddof = 1?
答案 0 :(得分:1)
更新:
In [298]: df
Out[298]:
val
idx
0 0
2 2
4 0
1 2
3 0
0 2
0 0
0 0
3 4
2 2
In [299]: def std(x):
...: return np.std(x, ddof=1)
...:
In [300]: df.groupby(level=0)['val'].agg(['mean', std]).dropna(how='all')
Out[300]:
mean std
idx
0 0.5 1.000000
1 2.0 NaN
2 2.0 0.000000
3 2.0 2.828427
4 0.0 NaN
试试这个:
df2 = df.groupby(level='Index').std(ddof=1).dropna(how='all')
或
df2 = df.groupby(level='Index').agg(lambda x: np.std(x, ddof=1)).dropna(how='all')
或只是
df2 = df.groupby(level='Index').agg(np.std, ddof=1).dropna(how='all')