Pandas分组聚合导出CSV缺列及新增avg_spend列问题求助
问题原因
pandas的groupby操作默认会把分组所用的维度列设为结果的行索引,你调用to_csv时设置了index=False,会跳过行索引写入,所以分组维度列就丢失了,打印时能看到是因为pandas默认会显示索引内容。
解决方法
两步操作即可满足需求:
- 分组时设置
as_index=False,让分组维度列保留为普通数据列,不转成索引 - 聚合完成后直接按规则新增
avg_spend计算列
修正后代码
# 分组聚合时加as_index=False保留所有分组维度列 final = gg.groupby(['Phone','BID', 'P_NAME', 'STATE','VILLAGE', 'TALUK', 'DISTRICT'], as_index=False) \ .agg({'AMOUNT':'sum', 'CUST_NUMB': 'count','DATE': 'max'}) # 新增计算列avg_spend final['avg_spend'] = final['AMOUNT'] / final['CUST_NUMB'] # 写入CSV,所有字段都会正常导出 final.to_csv("spend.csv", index=False)
如果不想修改groupby的参数,也可以在聚合完成后调用reset_index()把索引转成普通列,效果完全一致:
final = gg.groupby(['Phone','BID', 'P_NAME','STATE','VILLAGE', 'TALUK', 'DISTRICT']) \ .agg({'AMOUNT':'sum', 'CUST_NUMB': 'count','DATE': 'max'}).reset_index()
内容的提问来源于stack exchange,提问作者CMG Rubanbridge
相关产品推荐
相关产品推荐

