使用set_index将列转为行索引时出现NaN问题(Python新手求助)
解决set_index后索引为NaN的问题
以下是几种常见原因和对应的解决办法:
列名不匹配
先确认目标列的准确名称,执行print(data_new.columns)查看所有列名,检查是否和你写的'Usual Mode of Transport to Work'完全一致(包括空格、大小写、特殊字符)。如果列名前后有空格,可先清理列名:data_new.columns = data_new.columns.str.strip()再重新执行set_index操作。
未修改原DataFrame
set_index默认不会直接修改原DataFrame,而是返回一个新的DataFrame。你需要二选一:- 加
inplace=True参数直接修改原数据:data_new.set_index('Usual Mode of Transport to Work', inplace=True) - 将返回的新DataFrame重新赋值给变量:
data_new = data_new.set_index('Usual Mode of Transport to Work')
- 加
目标列本身存在大量缺失值
先检查目标列的缺失情况:print(data_new['Usual Mode of Transport to Work'].isna().sum())如果结果显示有大量NaN,说明原数据里该列就缺失严重,需要先处理缺失(比如删除缺失行
data_new = data_new.dropna(subset=['Usual Mode of Transport to Work']),或者填充缺失值),再设置索引。
内容的提问来源于stack exchange,提问作者xuan
相关产品推荐
相关产品推荐

