You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Pandas多索引透视表新增计算非NaN值的均值列

实现代码

Pandas 内置的均值计算方法默认自动跳过NaN值,无需手动实现求和、计数逻辑,适配多索引透视表的写法如下:
假设你的透视表变量名为temp_pivot:

import pandas as pd

# 选中days层级下的所有列,按行计算均值后赋值给新列
temp_pivot['avg_num'] = temp_pivot.loc[:, pd.IndexSlice['days', :]].mean(axis=1).astype(int)

代码说明

  • pd.IndexSlice['days', :] 是多索引列的专属选择语法,用于精准选中第一级为days的所有子列,避免其他无关列参与计算
  • mean(axis=1) 表示按行计算均值,默认开启skipna=True参数,计算逻辑恰好是「非NaN值总和 / 非NaN值数量」,完全匹配你的需求
  • 末尾的.astype(int)用于把浮点数结果转为整数,和你给出的预期输出格式对齐,不需要整数格式可以删掉

如果你确实想按照自己的思路用loc搭配求和、计数手动实现,可以用以下写法,效果完全一致:

# 按行求和
row_sum = temp_pivot.loc[:, pd.IndexSlice['days', :]].sum(axis=1)
# 按行统计非NaN值数量
row_count = temp_pivot.loc[:, pd.IndexSlice['days', :]].count(axis=1)
# 计算均值
temp_pivot['avg_num'] = (row_sum / row_count).astype(int)

内容的提问来源于stack exchange,提问作者Digital Moniker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 06:06:03