使用pandas loc命令筛选spindle列返回空DataFrame如何解决
问题排查与解决方法
- 第一步:验证
spindle列的数据类型
很多时候匹配不到是因为用字符串类型的'2'去匹配数值类型的2导致的,先执行以下代码确认列属性:
# 输出列类型 print(df['spindle'].dtype) # 输出前10行的原始值,方便对照 print(df['spindle'].head(10).tolist())
如果输出的类型是int或者float,直接把筛选条件改成数值匹配即可:
df1 = df[df['spindle'] == 2]
- 第二步:处理多余空格/不可见字符
如果确认spindle是字符串类型,优先对字段值做前后去空格处理后再匹配:
df1 = df[df['spindle'].str.strip() == '2']
如果去空格后还是无结果,可以打印单个值的编码和长度,确认是否有其他不可见字符:
sample_val = df['spindle'].iloc[0] print(f"值的原始表示:{repr(sample_val)},字符长度:{len(sample_val)}")
- 快速验证替代方案
如果不需要完全匹配,可以用模糊匹配快速验证是否存在包含2的记录:
# na=False表示自动忽略空值,不会报错 df1 = df[df['spindle'].str.contains('2', na=False)]
内容的提问来源于stack exchange,提问作者bowen55
相关产品推荐
相关产品推荐

