gpt4 book ai didi

python - Pandas str.contains 用于部分字符串的精确匹配

转载 作者:行者123 更新时间:2023-11-28 18:35:11 27 4
gpt4 key购买 nike

我有一个 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 列中搜索精确部分字符串匹配有什么建议吗?

谢谢!

最佳答案

您可以传递 regex=False 以避免混淆对 str.contains 的参数的解释:

>>> df.full_path.str.contains(ex)
0 False
1 False
2 False
3 False
4 False
5 False
Name: full_path, dtype: bool
>>> df.full_path.str.contains(ex, regex=False)
0 False
1 False
2 False
3 False
4 False
5 True
Name: full_path, dtype: bool

(另外:您的 lambda x: ex in x 应该有效。NameError 表明您出于某种原因没有定义 ex。)

关于python - Pandas str.contains 用于部分字符串的精确匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33193792/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com