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