尝试删除DataFrame列时触发KeyError: not found in axis错误
解决DataFrame删除SG列报错的问题
问题根源
你遇到的问题大概率是列名里的空白不是普通半角空格,可能是全角空格、制表符或者其他隐藏字符,导致手动加前后空格的方式匹配不到真实列名。
步骤1:确认真实列名
先打印所有列名,或者查看列名的具体字符编码,搞清楚真实的列名细节:
# 打印所有列名列表 print(df.columns.tolist()) # 查看每个列名的字符编码,排查隐藏特殊字符 for col in df.columns: print(f"列名: '{col}',字符编码: {[ord(c) for c in col]}")
比如全角空格的ASCII码是12288,和半角空格的32完全不同,这时候手动加半角空格肯定匹配不上。
步骤2:两种可行解决方法
方法一:统一清理列名空白
直接把所有列名的前后空白(含各类空白字符)清理掉,之后再删除列就不会报错:
# 复制原数据 df = df.copy() # 清理列名前后的所有空白字符 df.columns = df.columns.str.strip() # 删除SG列 df.drop('SG', axis=1, inplace=True)
方法二:精准匹配真实列名
如果不想修改原列名,直接定位包含SG的列进行删除:
df = df.copy() # 筛选出包含SG的列 sg_column = [col for col in df.columns if 'SG' in col][0] # 删除目标列 df.drop(sg_column, axis=1, inplace=True)
内容的提问来源于stack exchange,提问作者Luyolo
相关产品推荐
相关产品推荐

