Pandas按age group和churn分组后如何计算多列churn=1/churn=0的比值
实现方案
前提说明
- 假设你现有的多索引分组DataFrame名为
grouped_df,索引第一层为age group,第二层为churn,数值列为salary、debt、investments - 如果是未分组的原始用户数据,需要先完成分组聚合,代码参考下文
核心实现代码
如果已经是分组聚合后的多索引DataFrame:
# 将churn索引层转换为列层级 unstacked_df = grouped_df.unstack(level='churn') # 计算各字段churn=1 / churn=0的比值 result_df = unstacked_df.xs(1, axis=1, level=1) / unstacked_df.xs(0, axis=1, level=1) # 可选:给列名添加_ratio后缀区分原字段 result_df = result_df.add_suffix('_ratio')
如果是未分组的原始数据,先执行分组聚合:
# 按age group、churn分组,对数值列做聚合(此处用均值,可按需替换为sum、median等聚合函数) grouped_df = df.groupby(['age group', 'churn'])[['salary', 'debt', 'investments']].mean() # 再执行上面的比值计算逻辑即可
结果说明
输出的result_df自动以age group为行索引,列对应各数值字段的churn比值,完全符合需求。
内容的提问来源于stack exchange,提问作者Alf
相关产品推荐
相关产品推荐

