You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pandas的isin()筛选DataFrame对象列返回空集该如何解决

问题原因与解决方法

筛选返回空结果,最常见的是目标列存在不可见空白字符、大小写不一致,或者数据类型不是字符串三类问题,按以下步骤排查即可:

步骤1:排查字符串首尾空白

从Excel读取的字符串经常会附带额外的空格、制表符等不可见字符,导致和你写的"HOUSTON"、"CONROE"匹配不上,先对列做去空白处理再筛选:

# 先去除首尾所有空白字符(包括空格、换行、制表符等)
df1["CITY_AD"] = df1["CITY_AD"].str.strip()
# 再执行筛选
result = df1[df1["CITY_AD"].isin(["HOUSTON","CONROE"])]

如果这一步已经能拿到结果,就不需要往下排查了。

步骤2:排查大小写不一致问题

如果去空白后还是没有结果,可能存在大小写混用的情况,统一转成大写再匹配:

df1["CITY_AD"] = df1["CITY_AD"].str.strip().str.upper()
result = df1[df1["CITY_AD"].isin(["HOUSTON","CONROE"])]

步骤3:排查数据类型问题

如果前两步都没用,先检查列的数据类型,确认是不是字符串类型:

print(df1["CITY_AD"].dtype)

如果输出不是object或者string类型,先转成字符串再处理:

df1["CITY_AD"] = df1["CITY_AD"].astype(str).str.strip().str.upper()
result = df1[df1["CITY_AD"].isin(["HOUSTON","CONROE"])]

辅助排查技巧

如果还是有问题,可以先打印出列里的唯一值,看实际存储的内容和你预期的有什么差异:

print(df1["CITY_AD"].unique())

你就能直接看到HOUSTON对应的值实际存储的是什么格式,针对性调整匹配的字符串即可。

内容的提问来源于stack exchange,提问作者Joe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 05:45:06