首页 > 解决方案 > 在pandas df中提取+后包含空格的子字符串的行

问题描述

我想获取dfpath列中包含 substring的所有行new+ folder。这个问题Select by partial string from a pandas DataFramenew+和 cs95 的答案对像or这样的子字符串非常有帮助,fol但是当我搜索时结果不正确

new+ folder.

>>>dft = pandas.DataFrame([[ '/new+folder/'], ['/new+ folder/']], columns=['a'])
index     path
0         `/new+folder/`
1         `/new+ folder/`

现在测试query

>>>print(dft.query('a.str.contains("new+")', engine='python').head())

a
0   new+folder
1  new+ folder
print(dft.query('a.str.contains("new+ ")', engine='python').head())
Empty DataFrame
Columns: [a]
Index: []
>>>print(dft.query('a.str.contains("new+ f")', engine='python').head())
Empty DataFrame
Columns: [a]
Index: []

测试contains

>>>dft[dft['a'].str.contains('new+')]
a
0   new+folder
1   new+ folder
>>>dft[dft['a'].str.contains('new+ ')]
a
>>>dft[dft['a'].str.contains('new+ f')]
a

当有 a之后+或我感觉到特殊字符时,如何解决出现的错误?

熊猫 0.24.2 Python 3.7.3 64 位

标签: pythonpython-3.xpandasdataframesubstring

解决方案


是的,+是特殊的正则表达式字符,如果需要使用以下解决方案,需要将其转义query

print(dft.query('a.str.contains("new\+ ")', engine='python').head())
               a
1  /new+ folder/

regex=False此处不起作用的解决方案:

print(dft.query('a.str.contains("new+ ", regex=False)', engine='python').head())

AttributeError:“dict”对象没有属性“append”

如果想通过boolean indexing同时使用两种解决方案进行过滤。


推荐阅读