繁体   English   中英

Pandas str.contains 产生意外结果

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM