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

如何移除透视表中NaN值数量超x的列并填充剩余列NaN

问题解决方法

错误原因

你误用了dropna的subset参数:该参数并非用来指定要删除的列,而是定义删除行/列时需要检查哪些轴的标签。当你设置axis=1(处理列)并传入列名到subset时,pandas会去行索引中查找这些名称,自然找不到,因此抛出KeyError。

同时注意你代码里的小问题:nan_values_idx = list(nan_values[nan_values>10].keys()),末尾多了个逗号,导致变量变成了包含列表的元组,也会引发后续操作异常。

正确实现步骤

1. 修正列名列表的获取

先正确筛选出需要删除的列(去掉多余逗号):

nan_values = pivot_table.isnull().sum()
# 筛选NaN数量超过10的列名,注意不要加末尾的逗号
cols_to_drop = nan_values[nan_values > 10].index.tolist()

2. 删除指定列

直接使用drop方法删除这些列:

# axis=1表示操作列方向
pivot_table_filtered = pivot_table.drop(cols_to_drop, axis=1)

3. 填充剩余列的NaN值

对保留的列填充NaN(示例用列均值填充,可根据需求替换为ffill、bfill或固定值):

# 用各列的均值填充NaN
pivot_table_final = pivot_table_filtered.fillna(pivot_table_filtered.mean())

简化写法(一步筛选保留列)

也可以直接筛选出NaN数量≤10的列,跳过删除步骤:

# 筛选需要保留的列
cols_to_keep = nan_values[nan_values <= 10].index
pivot_table_filtered = pivot_table[cols_to_keep]
# 填充NaN
pivot_table_final = pivot_table_filtered.fillna(pivot_table_filtered.mean())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 20:45:13