rau*_*aul 8 python data-analysis pandas
使用具有以下条件的子集创建数据框
subset_df = df_eq.loc[(df_eq['place'].str.contains('Chile')) & (df_eq['mag'] > 7.5),['time','latitude','longitude','mag','place']]
Run Code Online (Sandbox Code Playgroud)
想在 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
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激
在 pandas 1.0.0 中使用 str.contains 对我有用,语法如下:
df.query("columnA == 'foo' and columnB.str.contains('bar')")
Run Code Online (Sandbox Code Playgroud)
小智 6
我认为这里发生的是您无法str.contains在querypandas 方法中使用该方法。您可以做的是创建一个掩码并query使用 at 符号 (@)从内部引用该掩码。尝试这个:
my_mask = df_eq["feature"].str.contains('my_word')
df_eq.query("@my_mask")
Run Code Online (Sandbox Code Playgroud)
到目前为止,我可以通过使用在查询中使用engine='python'的.query方法的参数来做到这一点str.contains。
这应该有效:
query_df = df_eq[['time', 'latitude', 'longitude', 'mag', 'place']].query(
"place.str.contains('Chile') and mag > 7.5", engine="python")
Run Code Online (Sandbox Code Playgroud)