Pandas groupby操作后如何同时添加计数列和对应Part值的列表列
你可以通过groupby的agg方法为Part列同时指定多个聚合规则实现需求,示例代码如下:
import pandas as pd # 原始df构造示例,可直接替换为你自己的df data = [ ['1/1/2021', 'asd', 'v1', 'p1'], ['1/1/2021', 'asd', 'v1', 'p2'], ['1/1/2021', 'asd', 'v2', 'p1'], ['1/1/2021', 'pqr', 'v1', 'p1'], ['1/1/2021', 'pqr', 'v1', 'p2'], ['1/1/2021', 'pqr', 'v2', 'p2'], ] df = pd.DataFrame(data, columns=['Month', 'Cat', 'Constr', 'Part']) # 核心分组聚合代码 result = df.groupby( ['Month', 'Cat', 'Constr'], as_index=False # 让分组字段保持为普通列,不转为索引 )['Part'].agg( count='count', # 统计每个分组的Part数量 part=list # 把每个分组的Part值汇总为列表 )
运行上述代码得到的result就是你需要的目标结构。
如果你使用的pandas版本较低,不支持上述命名聚合的写法,可以改用字典传参的形式:
result = df.groupby( ['Month', 'Cat', 'Constr'], as_index=False )['Part'].agg({ 'count': 'count', 'part': list })
内容的提问来源于stack exchange,提问作者Zanam
相关产品推荐
相关产品推荐

