Pandas DataFrame列数异常及#列删除失败问题咨询
宝可梦数据集列数不符及列删除问题解决
1. 列数不符的原因
- 索引列被自动转成行索引:你列出的
index列,在读取数据时大概率被pandas默认设为了DataFrame的行索引,不会被统计到数据列里,直接少了1列。 - 列名读取时出现合并错误:从你贴的列名格式能看到,部分列名是换行展示的(比如
"Defense Sp."、"Atk Sp."、"Def"),原始数据文件里可能因为分隔符位置不对、换行符干扰,导致pandas把多列当成一列读取,直接造成列数减少。 - 列名识别异常:比如
"#"列可能因为格式问题(比如带引号、前后有空格),被pandas识别成了其他列的一部分,或者读取时被忽略,没被当成独立列。
2. 删除"#"列失败的解决办法
先执行print(df_pk.columns)查看所有列的精确名称,再按以下方式处理:
- 精确匹配列名:如果实际列名带双引号(比如
'"#"'),就用这个名称删除:df_pk = df_pk.drop('"#"', axis=1); - 清理列名后删除:如果列名前后有空格或特殊字符,先清理列名:
df_pk.columns = df_pk.columns.str.strip('" ') df_pk = df_pk.drop("#", axis=1) - 按列位置删除:如果确定
"#"列的位置(比如第2列,索引从0开始就是index=1),直接按位置删除:df_pk = df_pk.drop(df_pk.columns[1], axis=1); - 忽略错误强制删除(不推荐):如果暂时找不到精确列名,可加参数避免报错:
df_pk = df_pk.drop("#", axis=1, errors='ignore')
内容的提问来源于stack exchange,提问作者Ajantaa Venkatesan
相关产品推荐
相关产品推荐

