gpt4 book ai didi

python - 为 groupby 列编写自定义函数

转载 作者:太空宇宙 更新时间:2023-11-04 09:38:19 29 4
gpt4 key购买 nike

尝试编写以下自定义 groupby 函数来计算给定二进制列 b 中 1 的百分比:

def _get_perc(ds):
try:
return ds.value_counts(normalize=True).loc[1]
except KeyError:
return 0.0
df[['group','b']].groupby('group').apply(_get_perc)

但是 pandas 将 ds 作为数据框而不是系列;它给了我一个AttributeError:“DataFrame”对象没有属性“value_counts”。

将ds作为Series的函数应该怎么写?

最佳答案

指定要在 b 列上显式进行分组。

df
group b
0 1 0
1 1 1
2 2 0
3 2 0
4 2 1

df.groupby('group')['b'].apply(_get_perc)
group
1 0.500000
2 0.333333
Name: b, dtype: float64

不需要预索引步骤。


或者,value_counts 也可以直接在 Series 上调用:

df.groupby('group')['b'].value_counts(normalize=True).xs(1, level=1, axis=0)

group
1 0.500000
2 0.333333
Name: b, dtype: float64

额外的 xs 步骤是选择 1 的归一化计数。

关于python - 为 groupby 列编写自定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52730675/

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