我试图找到min,max,mean,sum并std在熊猫的GroupBy对象的一些列。为此,我的原始代码是这样的:
df_agg = df.groupby('id')[column_list].agg(['mean', 'max', 'min', 'sum', 'std'])
Run Code Online (Sandbox Code Playgroud)
但这NaN在std列中产生了很多s 。搜索后,我发现它 std接受一个参数 - ddof(Delta Degrees of Freedom) - 默认设置为 1。这导致除以 0 错误并给出这些NaN值。
现在,我想在上面代码中使用的参数ddof=0中发送一个参数,std但我不明白如何做到这一点。
请帮忙。
您可以创建自定义 lambda 函数:
f = lambda x: x.std(ddof=0)
f.__name__ = 'std_0'
df_agg = df.groupby('id')[column_list].agg(['mean', 'max', 'min', 'sum', f])
Run Code Online (Sandbox Code Playgroud)
样品:
df = pd.DataFrame({'A':list('abcdef'),
'B':[4,5,4,5,5,4],
'C':[7,8,9,4,2,3],
'D':[1,3,5,7,1,0],
'E':[5,3,6,9,2,4],
'id':list('aaabbb')})
print (df)
A B C D E id
0 a 4 7 1 5 a
1 b 5 8 3 3 a
2 c 4 9 5 6 a
3 d 5 4 7 9 b
4 e 5 2 1 2 b
5 f 4 3 0 4 b
column_list = ['C','D','E']
f = lambda x: x.std(ddof=0)
f.__name__ = 'std_0'
df_agg = df.groupby('id')[column_list].agg(['mean', 'max', 'min', 'sum', f])
print (df_agg)
C D E \
mean max min sum std_0 mean max min sum std_0 mean max
id
a 8 9 7 24 0.816497 3.000000 5 1 9 1.632993 4.666667 6
b 3 4 2 9 0.816497 2.666667 7 0 8 3.091206 5.000000 9
min sum std_0
id
a 3 14 1.247219
b 2 15 2.943920
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1384 次 |
| 最近记录: |