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

Pandas DataFrame新增百分比列仅返回NaN值如何解决

问题原因

你当前操作的clicks_pivot本质是带utm_source索引的Pandas Series,而非包含user_id列的DataFrame。通常这类结果是通过groupby单字段统计单列得到的,此时只有索引和统计值,没有名为user_id的列,clicks_pivot.user_id会直接返回空值,最终计算出的percent_clicked全为NaN。
少数情况是透视表生成了多级列名,直接取user_id无法匹配到实际列。

解决方法

方法1:直接基于Series计算

如果不需要修改原有索引结构,可以直接用Series本身的值做运算,不需要调用列名:

clicks_pivot['percent_clicked'] = (clicks_pivot / clicks_pivot.sum()) * 100

方法2:先转为标准DataFrame再计算

如果需要把utm_source从索引转为普通列,方便后续处理,可以先重置索引再计算:

# 把Series转为DataFrame,指定统计值的列名为user_id
clicks_pivot = clicks_pivot.reset_index(name='user_id')
# 执行百分比计算
clicks_pivot['percent_clicked'] = (clicks_pivot['user_id'] / clicks_pivot['user_id'].sum()) * 100

多级列名适配

如果是透视表生成的多级列名,可以先打印clicks_pivot.columns确认实际列结构,再替换计算逻辑中的列名即可,示例:

# 假设列名是('user_id', 'count')的多级结构
clicks_pivot['percent_clicked'] = (clicks_pivot[('user_id', 'count')] / clicks_pivot[('user_id', 'count')].sum()) * 100

内容的提问来源于stack exchange,提问作者Matias Borrell

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:54:03