python - 在pandas df中提取+后包含空格的子字符串的行
问题描述
我想获取df
其path
列中包含 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 位
解决方案
是的,+
是特殊的正则表达式字符,如果需要使用以下解决方案,需要将其转义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
同时使用两种解决方案进行过滤。
推荐阅读
- python - FiPy:如何在两个网格之间的界面处找到节点(顶点)
- angular - Angular 状态检查器不再工作
- android - 如何使用 Kotlin 将 JsonObjectRequest 元素保存在变量中?
- c# - 当我们说存储了同步上下文时,存储了什么?
- sql-server - 如何根据唯一值将视图加入表?
- c# - 本地化如何在 ASP.NET 中工作?CultureInfo.CurrentUICulture 是如何工作的?手动更改本地化文化
- python - 如何在索引上应用滚动
- excel - 在 vba excel 中,我试图做一个类似函数的计数,计算有多少适合 2 个 cirteria。一点经验
- python - 终端中的 Python 代码而不是输出 VSCode
- c# - 当 NServiceBus Recoverability 使用通知失败时发送消息