2016-07-29 120 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")