pandas .isin()过滤Excel导入的art_kennz列返回空 仅单列生效如何解决
问题原因排查及解决方案
导致该问题的常见原因如下:
- 列值包含不可见冗余字符
从Excel读取的art_kennz列值大概率前后带有空格、制表符、换行符等不可见字符,比如实际存储的是' S'/'S '而非纯'S',手动构造的DataFrame值是干净的,所以不会触发该问题。
可通过以下代码验证:
排查后可通过strip清理字符后再过滤:# 打印art_kennz列前10个值的原始内容和长度 for val in df['abc']['art_kennz'].head(10): print(f"值:{repr(val)},长度:{len(val)}")df['abc']['art_kennz_clean'] = df['abc']['art_kennz'].str.strip() df_merged = df['abc'][df['abc']['art_kennz_clean'].isin(['S','P','SP','GP'])] - 字符大小写/全角半角不匹配
Excel中存储的字符可能是小写's'/'p',或是全角字符'S'/'P',和你过滤条件中的半角大写字符不匹配,可先统一转换为半角大写再进行匹配。 - 读取Excel时的列类型异常
极少数情况是pandas读取Excel时将该列推断为非字符串类型,可先强制转换为字符串再过滤:df['abc']['art_kennz'] = df['abc']['art_kennz'].astype(str) df_merged = df['abc'][df['abc']['art_kennz'].str.strip().isin(['S','P','SP','GP'])]
内容的提问来源于stack exchange,提问作者x89
相关产品推荐
相关产品推荐

