【发布时间】:2023-03-24 19:39:01
【问题描述】:
我有一个 DataFrame(我称之为test),其中有一列包含文件路径,我想使用部分路径过滤数据。
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
我预计索引 5 的值为 True。起初我认为问题可能在于路径字符串实际上不匹配,因为与转义字符不同,但是:
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。这些 DataFrame 中可能有很多行,所以我还担心 apply 函数可能效率不高。
关于如何在 DataFrame 列中搜索 exact 部分字符串匹配项的任何建议?
谢谢!
【问题讨论】:
标签: python regex pandas contains