【发布时间】:2016-07-29 15:04:50
【问题描述】:
使用具有以下条件的子集创建数据框
subset_df = df_eq.loc[(df_eq['place'].str.contains('Chile')) & (df_eq['mag'] > 7.5),['time','latitude','longitude','mag','place']]
想在 Pandas 中使用 query() 复制上述子集。但不确定如何在 Pandas 查询中复制 str.contains() 等效项。查询中的“喜欢”似乎不起作用
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
任何帮助将不胜感激
【问题讨论】:
-
我在这里抓住了救命稻草,但是如果您设置
engine='python',您可能能够使用python的in运算符。如果它有效,它可能会以非常低效的查询告终(通常pandas尝试使用numexpr来加快速度,但numexpr不支持in运算符...) -
AFAIK,pandas
query()方法中尚未实现 SQLlike运算符,因此您无法使用query()方法来实现 -
感谢您的 cmets.Yeah like operator 不在那里,所以解决方法仍然是 str.contains()
-
你好,来自智利,我想知道你为什么在这种情况下使用
.iloc,下面的df_eq[(df_eq['place'].str.contains('Chile')) & (df_eq['mag'] > 7.5)][['time','latitude','longitude','mag','place']]应该足够了
标签: python pandas data-analysis