如何在Pandas透视表中添加非活跃率计算列?
解决Pandas透视表添加非活跃率列的问题
你的透视表生成后是多层列索引(MultiIndex),直接用pivot_table.count['active']无法正确获取数据,得用多层索引的规范访问方式。以下是具体实现方案:
方法1:直接计算并添加列
先提取活跃/非活跃的统计值,再按公式计算非活跃率(同时处理分母为0的情况避免报错):
# 提取活跃用户数(多层索引访问) active = pivot_table[('count', 'active')] # 提取非活跃用户数 inactive = pivot_table[('count', 'inactive')] # 计算非活跃率,用replace(0,1)避免分母为0的报错 pivot_table[('count', 'inactive_rate')] = inactive / (active + inactive).replace(0, 1) # 可选:扁平化列索引,让表格更易读 pivot_table.columns = pivot_table.columns.droplevel(0)
方法2:用assign方法一次性添加列
pivot_table = pivot_table.assign( inactive_rate=lambda df: df[('count', 'inactive')] / (df[('count', 'active')] + df[('count', 'inactive')]).replace(0, 1) ) # 可选:重命名列名 pivot_table.columns = ['active', 'inactive', 'inactive_rate']
处理后结果示例
countryOfOrigin active inactive inactive_rate AT 1 0 0.0 BE 1385 338 0.196 CZ 2 0 0.0 DE 61 6 0.089 DK 1 0 0.0
内容的提问来源于stack exchange,提问作者Fleur Lolkema
相关产品推荐
相关产品推荐

