2016-07-29 119 views
1

创建使用子集下面条件数据帧的等效熊猫 - 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不知道如何复制STR使用查询()来复制上述子集.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

我在这里抓着吸管,但是如果你设置'engine ='python'',你可以使用Python的'in'运算符。如果它起作用,它可能最终会导致一个非常低效的查询(通常'pandas'试图使用'numexpr'来加快速度,但'numexpr'不支持'in'运算符......) – mgilson

+2

AFAIK,SQL 'like'运算符还没有在pandas的'query()'方法中实现,所以你不能用'query()'方法来实现 – MaxU

+0

感谢您的评论。对于运算符而言,是不存在的,所以解决方法仍然是str 。载() – raul

回答

3

我的想法是怎么回事的是,你是不是能够利用query大熊猫方法中的方法str.contains可以创建一个掩码并使用at符号(@)从query内引用该掩码。试试这个:

my_mask = df_eq["feature"].str.contains('my_word') 
df_eq.query("@my_mask")