3
我有一個DataFrame(我將其稱爲test
)與包含文件路徑的列,我想用部分路徑過濾數據。大熊貓str.contains部分字符串的完全匹配
full_path
0 C:\data\Data Files\BER\figure1.png
1 C:\data\Data Files\BER\figure2.png
2 C:\data\Previous\Error\summary.png
3 C:\data\Data Files\Val\1x2.png
4 C:\data\Data Files\Val\2x2.png
5 C:\data\Microscopy\defect.png
的部分路徑發現是:
ex = 'C:\\data\\Microscopy'
我試過str.contains
但是,
test.full_path.str.contains(ex)
0 False
1 False
2 False
3 False
4 False
5 False
我本來期望的True
index的值5.起初我認爲問題可能與路徑字符串由於與轉義字符的差異而不實際匹配,但是:
ex in test.full_path.iloc[5]
等於True
。經過一番挖掘,我認爲str.contains
的參數應該是一個正則表達式,所以也許部分路徑中的「\」會混淆事物呢?
我也試過:
test.full_path.apply(lambda x: ex in x)
但是這給NameError: name 'ex' is not defined
。這些數據框可能有很多行,所以我也擔心apply
函數可能效率不高。
關於如何搜索DataFrame列的任何建議確切部分字符串匹配?
謝謝!
謝謝帝斯曼!我應該在文檔中發現這一點。 (我也認爲lambda表達式應該已經工作了,''ex''在代碼中是明確定義的......也許這與我在使用python調試器的''set_trace''上試過的事實有關)。 – endangeredoxen