gpt4 book ai didi

python - 基于分组列的条件总和

转载 作者:行者123 更新时间:2023-12-01 02:21:36 26 4
gpt4 key购买 nike

基本上,我想创建一个列ERROR RATE,它将ERROR中的YES的总和除以NO 位于 ERROR 中,但要根据 DESCRIPTION< 按 LOCATION 过滤 ERROR RATE/.

df = pd.DataFrame({'ERROR' : ['YES','YES','NO','NO','YES'],
'LOCATION' : ['London', 'New York', 'Edinburgh', 'Paris', 'Berlin'],
'DESCRIPTION' : ['Good', 'Bad', 'Good', 'Bad', 'Bad']})

我尝试按照以下方式编写代码:

df.groupby(['DESCRIPTION','LOCATION'])['ERROR'].agg()

但我不确定a)这是否是正确的方法以及b)我需要为agg()编写什么样的函数

提前致谢

最佳答案

也许您正在寻找 groupby + value_counts + unstack + div

i = df.groupby(['DESCRIPTION' ,'LOCATION']).ERROR.value_counts().unstack(-1)
j = (i.YES / i.NO).to_frame('ERROR_RATE')

j

ERROR_RATE
DESCRIPTION LOCATION
Bad Berlin ...
New York ...
Paris ...
Good Edinburgh ...
London ...

如果特定组中没有 YESNO 计数,则结果列中的这些条目将具有 NaN最终结果。

<小时/>

如果您使用 agg,则需要 3 路 groupby。

i = df.groupby(['DESCRIPTION','LOCATION','ERROR']).ERROR.count().unstack()
j = (i.YES / i.NO).to_frame('ERROR_RATE')

j
ERROR_RATE
DESCRIPTION LOCATION
Bad Berlin ...
New York ...
Paris ...
Good Edinburgh ...
London ...

countagg('count') 相同。

关于python - 基于分组列的条件总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47907817/

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