簡體   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