Python 使用熊猫查询按部分字符串选择行

Python 使用熊猫查询按部分字符串选择行,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据帧。1列(name)具有字符串值。我想知道是否有一种方法可以使用该方法根据与特定列的部分字符串匹配来选择行 我试过: df.query('name.str.contains(“lu”))。错误消息:“TypeError:‘Series’对象是可变的,因此无法对其进行哈希” df.query('名称中的'lu')。返回一个空的数据帧 我使用的代码是: import pandas as pd df = pd.DataFrame({ 'name':['blue','red',

我有一个
数据帧
。1列(
name
)具有字符串值。我想知道是否有一种方法可以使用该方法根据与特定列的部分字符串匹配来选择行

我试过:

  • df.query('name.str.contains(“lu”))
    。错误消息:“TypeError:‘Series’对象是可变的,因此无法对其进行哈希”
  • df.query('名称中的'lu')
    。返回一个空的
    数据帧
我使用的代码是:

import pandas as pd

df = pd.DataFrame({
    'name':['blue','red','blue'],
    'X1':[96.32,96.01,96.05]
}, columns=['name','X1'])  


print(df.query('"lu" in name').head())
print(df.query('name.str.contains("lu")').head())
我知道我可以使用
df[df['name'].str.contains(“lu”)]
但我更喜欢使用 询问

这个答案已经过时了。请查收


从0.20.2版开始,
query
不支持部分字符串匹配。有一个关于它的问题,一个核心开发者似乎同意这将是一个很好的补充

@ayhan提到的问题现在展示了如何通过使用
query
的python引擎来实现这一点:

print(df.query('name.str.contains('lu'),engine='python').head())

应该可以使用。

解决方案现在可以使用
Query
而不使用发动机规格,根据手册,是什么提高了速度

在查询规范中使用
包含
,这是处理字符串内容的一个强大功能,因为允许使用正则表达式

结果是

A   B
1.1 Paulo  57
    Lucas  49
3.3 Luana  38
    Larra  82
5.5 BaLu   37
6.6 Bela   14
=============
            C
A   B
1.1 Lucas  49
3.3 Luana  38
5.5 BaLu   37
=============
            C
A   B
1.1 Lucas  49
3.3 Luana  38
    Larra  82
5.5 BaLu   37
=============
            C
A   B
1.1 Lucas  49
3.3 Luana  38
    Larra  82

好像还没有实施:@ayhan谢谢。欢迎您将评论转换为答案。
df.query('ColumnName.str.contains(\'seeded\u string\'))
适用于我在
0.24.2
中搜索
sough\u string
列中存储的值。我会注意到,'engine=python'似乎不再需要了(再也不需要了?),因为它带来了太多的魔力,所以PR关闭了:然而@RhoPhi-answer也可以工作。它甚至适用于最近添加的backtick功能:
df.query(`column name`.str.contains('seedd_string'))”
。真是太神奇了。
A   B
1.1 Paulo  57
    Lucas  49
3.3 Luana  38
    Larra  82
5.5 BaLu   37
6.6 Bela   14
=============
            C
A   B
1.1 Lucas  49
3.3 Luana  38
5.5 BaLu   37
=============
            C
A   B
1.1 Lucas  49
3.3 Luana  38
    Larra  82
5.5 BaLu   37
=============
            C
A   B
1.1 Lucas  49
3.3 Luana  38
    Larra  82