gpt4 book ai didi

python - 使用 pandas,如何对 bool 列为 true 的情况进行分组/聚合求和?

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

我有一个根据数据库查询构造的 DataFrame。框架中的每一行都有一个数据库 ID、日期、作业、一个问题 bool 值和一个固定 bool 值。例如:

data = [
{'id': 1, 'date': '2020-02-01', 'job': 'ABC', 'issue': True, 'fixed': False},
{'id': 2, 'date': '2020-02-01', 'job': 'ABC', 'issue': False, 'fixed': False},
{'id': 3, 'date': '2020-02-01', 'job': 'ABC', 'issue': True, 'fixed': True},
{'id': 4, 'date': '2020-02-01', 'job': 'DEF', 'issue': True, 'fixed': True}
]
data_df = pd.DataFrame(data)

我想做一个groupbyagg,我按工作和日期进行分组,并获取“问题”和“已修复”的计数为真。像这样的东西:

result_data = [
{'date': '2020-02-01', 'job': 'ABC', 'issue': 2, 'fixed': 1},
{'date': '2020-02-01', 'job': 'DEF', 'issue': 1, 'fixed': 1}
]
result_df = pd.DataFrame(result_data)

代码看起来像:

result_df = data_df.groupby(['date', 'job']).agg({'issue': 'sum-true', 'fixed': 'sum-true'})

但我不确定 'sum-true' 应该是什么。不,我不能只通过列是否为 true 来过滤整个 DF,然后求和,因为 issue 可能是 True,而 fixed错误

最佳答案

这个怎么样?

>>> df.groupby(['date', 'job'])[['issue', 'fixed']].sum()
issue fixed
date job
2020-02-01 ABC 2.0 1.0
DEF 1.0 1.0

简单地对 bool 向量求和将返回 True 计数。

如果您希望数据采用上面指定的确切格式,只需reset_index:

>>> df.groupby(['date', 'job'])[['issue', 'fixed']].sum().reset_index()
date job issue fixed
0 2020-02-01 ABC 2.0 1.0
1 2020-02-01 DEF 1.0 1.0

关于python - 使用 pandas,如何对 bool 列为 true 的情况进行分组/聚合求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60345218/

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