2016-07-29 2 views
1

Создание dataframe с использованием Подменю с ниже условияхПанды - эквивалент str.contains() в запросе панд

subset_df = df_eq.loc[(df_eq['place'].str.contains('Chile')) & (df_eq['mag'] > 7.5),['time','latitude','longitude','mag','place']] 

Хотите повторить выше подмножества с помощью запроса() в Pandas.However не уверен, как повторить ул .contains() в запросе Pandas. «Как» в запросе не похоже на работу

query_df = df_eq[['time','latitude','longitude','mag','place']].query('place like \'%Chile\' and mag > 7.5') 

place like '%Chile'and mag >7.5 
      ^
SyntaxError: invalid syntax 

Любая помощь будет оценена

+0

Я хватался за соломинку, но вы _might_ быть в состоянии использовать 'в' оператора питона, если вы установите' двигатель = 'python''. Если это сработает, это, скорее всего, закончится довольно неэффективным запросом (обычно 'pandas' пытается использовать' numexpr' для ускорения работы, но 'numexpr' не поддерживает' in' operator ...) – mgilson

+2

AFAIK, SQL Оператор 'like' еще не реализован в методе pandas' query() ', поэтому вы не можете его использовать, используя метод' query() ' – MaxU

+0

Спасибо за ваши комментарии. Так как оператор не существует, поэтому работа вокруг остается str .содержит() – raul

ответ

3

То, что я думаю, что здесь происходит, что вы не в состоянии использовать метод str.contains в рамках метода query панд , То, что вы может do, создает маску и ссылается на эту маску в пределах query с помощью знака at (@). Попробуйте это:

my_mask = df_eq["feature"].str.contains('my_word') 
df_eq.query("@my_mask") 
Смежные вопросы