基于多条件统计pandas DataFrame行出现次数并整合用户账户聚合数据
实现方案
1. 一次性完成多指标聚合
直接以account、name作为联合分组键,同时计算累计交易金额、交易活跃度(交易次数),无需分开统计再合并,避免映射匹配误差:
# 双字段分组,同时计算两个统计指标 stat_df = df.groupby(['account', 'name'], as_index=False).agg( 累计交易金额=('amount', 'sum'), 交易次数=('amount', 'count') ) # 可按交易次数降序排序,优先展示高活跃账户 stat_df = stat_df.sort_values('交易次数', ascending=False, ignore_index=True)
该方案天然保证账户与用户名的对应关系,千万级数据量下的计算效率远高于apply、分表合并的实现方式。
2. 实现同用户多账户仅首次展示用户名
如果需要同一个用户的多条账户记录仅首次显示用户名,先按用户名字段排序保证同用户账户集中排列,再把重复的用户名替换为空即可:
# 先按用户名排序,确保同用户的账户集中展示 stat_df = stat_df.sort_values('name', ignore_index=True) # 重复用户名置空 stat_df.loc[stat_df['name'].duplicated(), 'name'] = ''
内容的提问来源于stack exchange,提问作者Marelons
相关产品推荐
相关产品推荐

