如何在pandas中组合两次groupby操作完成按日多指标统计
你可以使用pandas的groupby.agg()方法一次性完成多个聚合指标计算,无需单独计算后再合并,写法简洁高效,是符合Python风格的实现方案:
import pandas as pd # 构造示例DataFrame df = pd.DataFrame({ "id_person": ["10", "10", "11", "11", "11", "10"], "date": ["2021-08-30", "2021-08-30", "2021-08-30","2021-08-30","2021-08-31","2021-08-31",], "some_value": [34, 1, 31, 9, 5, 12], }) # 一次性聚合得到结果 df_output = df.groupby('date', as_index=False).agg( persons=('id_person', 'nunique'), # 统计每个日期下不同人员ID的数量 count=('id_person', 'size') # 统计每个日期下的总记录行数 )
上述代码逻辑说明:
- 按
date字段分组,as_index=False参数保证分组后的date是普通列而非索引,和你期望的输出格式一致 agg()方法支持通过自定义指标名=(聚合列, 聚合函数)的语法,一次性定义多个需要计算的聚合指标,运行后得到的结果和你给出的期望输出完全一致。
内容的提问来源于stack exchange,提问作者vojta
相关产品推荐
相关产品推荐

