gpt4 book ai didi

python - 将参数传递给 Pandas GroupBy `agg()` 中的函数列表

转载 作者:行者123 更新时间:2023-12-01 01:43:37 25 4
gpt4 key购买 nike

我正在尝试查找min , max , mean , sumstd Pandas 中 GroupBy 对象的某些列。为此,我的原始代码是这样的:

df_agg = df.groupby('id')[column_list].agg(['mean', 'max', 'min', 'sum', 'std'])

但是这产生了很多 NaN位于 std列。经过搜索,我found that std接受一个参数 - ddof (自由度增量)- 默认设置为 1。这导致除以 0 错误并给出 NaN值。

现在,我想发送一个参数ddof=0std上面的代码中使用了它,但我不明白如何做到这一点。

请帮忙。

最佳答案

您可以创建自定义 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])

示例:

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

关于python - 将参数传递给 Pandas GroupBy `agg()` 中的函数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51626333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com