Pandas中如何实现字符串严格匹配筛选DataFrame行?
严格筛选DataFrame中Group列值为'Male'的行
首先明确:df['Group'].eq('Male')本身就是严格相等匹配,理论上只会返回Group列值完全等于'Male'的行。如果你的结果包含了Male:Age 0-18这类行,大概率是以下两种情况:
- 你实际执行的不是
eq方法,而是误用到了模糊匹配(比如str.contains('Male')) - Group列的字符串存在看不见的空格/特殊字符,导致你看到的'Male'其实带有额外内容
针对严格匹配的需求,你可以用以下几种可靠方式实现:
直接使用
==运算符,效果和eq完全一致:df = df[df['Group'] == 'Male']先清理字符串首尾的空格(如果数据存在这类问题),再做匹配:
# 去除字符串首尾的空格、制表符等空白字符 df['Group'] = df['Group'].str.strip() # 执行严格筛选 df = df[df['Group'] == 'Male']用
query方法实现严格匹配:df = df.query("Group == 'Male'")
如果还是出现匹配错误,建议先排查Group列的实际值,确认是否有隐藏字符:
# 打印所有唯一值,查看真实内容 print(df['Group'].unique())
内容的提问来源于stack exchange,提问作者Amaranth_Gray
相关产品推荐
相关产品推荐

