将DataFrame.query()与pandas.Series.str.contains一起使用会得到AttributeError:'dict'对象没有属性'append'

时间:2019-07-31 09:12:36

标签: python pandas dataframe

我使用str.contains()创建了两个查询字符串,并将它们组合在一起,然后将其传递给DataFrame.query()

  

我收到AttributeError:'dict'对象没有属性'append'。

删除regex=False参数很好,但是我的数据包含一些'/*'。 因此,我需要此参数将我的数据视为文字字符串。

import pandas as pd

df = pd.DataFrame({'city': ['osaka', ], 'food': ['apple', ],})

querystr1 = 'osaka'
querystr2 = 'apple'

querystr1 = "city.str.contains('" + querystr1 + "', regex=False)"
querystr2 = "food.str.contains('" + querystr2 + "', regex=False)"
querystr = querystr1 + ' & ' + querystr2
print(querystr)

value = df.query(querystr, engine='python').index.values.astype(int)

print(value)
print(value.size)

如何查询未识别正则表达式的数据框? 有更聪明的方法吗?

1 个答案:

答案 0 :(得分:0)

我不是专家,但是删除regex=False部分对我来说很有效:

import pandas as pd

df = pd.DataFrame({'city': ['osaka', ], 'food': ['apple', ],})

querystr1 = 'osaka'
querystr2 = 'apple'

querystr1 = "city.str.contains('" + querystr1 + "')"
querystr2 = "food.str.contains('" + querystr2 + "')"
querystr = querystr1 + ' & ' + querystr2
print(querystr)

value = df.query(querystr, engine='python').index.values.astype(int)