如何在pandas DataFrame中实现转置及分组统计生成用户汇总表
你当前代码的问题是将status也放入了分组键,会导致同一个id的不同状态被拆分为多行,不符合你的汇总需求。可以通过groupby.agg()为不同字段指定自定义聚合规则实现需求,完整代码如下:
import pandas as pd # 你自己的df构造逻辑保持不变 # 核心聚合逻辑 df_summary = df.groupby(['id', 'emailaddress', 'ownername'], as_index=False).agg( # 聚合status:只要存在pending就返回pending status=('status', lambda x: 'pending' if (x == 'pending').any() else 'submitted'), # 统计该id总Key数 TotalKey=('Key', 'count'), # 统计状态为submitted的Key数 CompletedKey=('status', lambda x: (x == 'submitted').sum()) ) # 计算剩余Key数 df_summary['RemainingKey'] = df_summary['TotalKey'] - df_summary['CompletedKey']
运行后得到的df_summary就和你期望的输出格式完全一致。
内容的提问来源于stack exchange,提问作者aditya
相关产品推荐
相关产品推荐

