[英]Pandas str.contains produces unexpected results
我正在尝试搜索 pandas dataframe (python 3.8.8)中的列以查找包含不同字符串的行。 这是我正在搜索的 df 列的示例。
print(df['fileName'])
0 data/0001_X+0Y-1-0.txt
1 data/0001_X+0Y-1-0.txt
2 data/0001_X+0Y-1-0.txt
3 data/0001_X+0Y-1-0.txt
4 data/0001_X+0Y-1-0.txt
...
171721 data/2293_X-1Y-1-0.txt
171722 data/2293_X-1Y-1-0.txt
171723 data/2293_X-1Y-1-0.txt
171724 data/2293_X-1Y-1-0.txt
171725 data/2293_X-1Y-1-0.txt
有谁知道为什么我只能返回我想要搜索的 9 个不同字符串中的 1 个的结果? 我确定我的搜索字符串中没有错别字。 可以肯定的是,我已经复制/粘贴到我的脚本和交互式 python shell 中。
返回具有正确行数的 df: contain_values = df[df['fileName'].str.contains("X-1Y-1-0")]
返回空 df: contain_values2 = df[df['fileName'].str.contains("X+0Y-1-0")]
您必须在str.contains
上禁用regex
,因为+
表示一个或多个字符:
>>> df[df['fileName'].str.contains("X+0Y-1-0", regex=False)]
fileName
0 data/0001_X+0Y-1-0.txt
1 data/0001_X+0Y-1-0.txt
2 data/0001_X+0Y-1-0.txt
3 data/0001_X+0Y-1-0.txt
4 data/0001_X+0Y-1-0.txt
或@YusufErtas 建议,用\+
+
>>> df[df['fileName'].str.contains("X\\+0Y-1-0")]
fileName
0 data/0001_X+0Y-1-0.txt
1 data/0001_X+0Y-1-0.txt
2 data/0001_X+0Y-1-0.txt
3 data/0001_X+0Y-1-0.txt
4 data/0001_X+0Y-1-0.txt
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.