为何pandas的.unique方法与.loc筛选无法配合使用?
Pandas .unique()识别到元素但.loc筛选返回空的解决办法
这种情况大概率是字符串里藏着你看不到的空白或特殊字符,或者数据类型不一致导致的,给你几个排查和解决的步骤:
1. 先确认唯一值的真实样貌
.unique()显示的"CH"可能只是表面,实际可能带前后空格、全角空格或者换行符。用下面的代码打印每个唯一值的原始表示和长度,就能揪出问题:
for farm in data["farm_y"].unique(): print(f"值: {repr(farm)}, 长度: {len(farm)}")
如果输出里"CH"的长度不是2,说明肯定有隐藏字符。
2. 针对性清理数据
情况1:前后有空白字符
直接用str.strip()去掉字符串首尾的空白:
data["farm_y"] = data["farm_y"].str.strip()
情况2:包含不可见特殊字符(比如全角空格、制表符)
用正则表达式替换掉所有空白类字符:
data["farm_y"] = data["farm_y"].str.replace(r'\s+', '', regex=True)
情况3:数据类型不一致
比如有的元素是字符串,有的是数值/None,导致==比较不匹配。先统一转成字符串再清理:
data["farm_y"] = data["farm_y"].astype(str).str.strip()
3. 验证效果
清理完之后再执行你原来的循环,就能正常筛选出对应的数据了。
内容的提问来源于stack exchange,提问作者Frankel
相关产品推荐
相关产品推荐

