如何在Pandas query函数的查询字符串中修剪列字符串?
解决Pandas query中带尾随空格的字符串匹配问题
你的问题是My Pet列里存在带尾随空格的cat 值,直接用== 'cat'只能匹配不带空格的那行,下面给你几种可行的解决方法:
方法1:在query中直接修剪列值
在查询字符串里对My Pet列调用str.strip(),修剪掉前后空格后再做匹配:
catDF = testDF.query("`My Pet`.str.strip() == 'cat'") catDF.head()
这样就能同时匹配cat和cat 的行,输出两行目标结果。
方法2:用正则匹配包含cat及尾随空格的情况
如果需要更灵活的匹配(比如允许任意数量的尾随空格),可以用str.contains结合正则表达式:
catDF = testDF.query("`My Pet`.str.contains('^cat\\s*$')")
正则^cat\s*$表示以cat开头,后面跟着零个或多个空白字符直到行尾,刚好匹配你的两种数据情况。
方法3:提前清理DataFrame的列
如果后续还会多次用到这个列的查询,建议先一次性清理列里的空格,之后再用普通查询即可:
# 先修剪列值 testDF['My Pet'] = testDF['My Pet'].str.strip() # 再执行查询 catDF = testDF.query("`My Pet` == 'cat'")
验证结果
执行上述任意一种方法后,输出都会包含两行:
My Pet Cost Weight Name 0 cat $10 10 pounds Violet 1 cat $10 15 pounds Sirius
内容的提问来源于stack exchange,提问作者nicomp
相关产品推荐
相关产品推荐

