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

Fra*_*urt 7 python dataframe pandas

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

我试过了:

  • df.query('name.str.contains("lu")')。错误消息:“ TypeError:'系列'对象是可变的,因此不能被散列”
  • df.query('"lu" in name')。返回一个空值DataFrame

我使用的代码:

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())
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用,df[df['name'].str.contains("lu")]但我更喜欢使用查询。

pet*_*ens 6

@ayhan所指的问题现在说明了如何使用query的python引擎来实现:

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

应该管用。


ayh*_*han 4

这个答案已经过时了。请检查@petobens 的回答

从版本 0.20.2 开始,query不支持部分字符串匹配。未来有一个关于它的开放请求,其中一位核心开发人员似乎同意这将是一个很好的补充。