【发布时间】:2020-06-06 06:30:20
【问题描述】:
我有一个从数据库查询构造的 DataFrame。框架中的每一行都有一个数据库 ID、日期、工作、一个问题布尔值和一个固定布尔值。例如:
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)
我想做一个groupby 和agg,我按工作和日期分组,并获得“问题”和“已解决”的数量为真。比如:
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' 应该是什么。不,我不能只通过列为真过滤整个 DF,然后求和,因为 issue 可能是 True,而 fixed 是 False。
【问题讨论】:
标签: python pandas aggregate pandas-groupby