在Pandas内部使用LIKE.query()

2024-05-18 23:25:48 发布

您现在位置:Python中文网/ 问答频道 /正文


Tags: python
2条回答

@volodymyr是对的,但是他忘记了一件事,那就是你需要设置engine='python'以使表达式工作。

示例: >>> pd_df.query('column_name.str.contains("abc")', engine='python')

Here是有关默认引擎(“numexpr”)和“python”引擎的更多信息。另外,请记住,python在处理大数据时速度较慢。

如果必须使用df.query(),正确的语法是:

pandas.query('column_name.str.contains("abc")')

您可以很容易地将此条件与其他条件结合起来:

pandas.query('column_a.str.contains("abc") or column_b.str.contains("xyz") and column_c>100')

不过,它并不是完全等同于SQL,但仍然可以使用。

不使用query(),但这将提供您要查找的内容:

df[df.col_name.str.startswith('abc')]


df
Out[93]: 
  col_name
0     this
1     that
2     abcd

df[df.col_name.str.startswith('abc')]
Out[94]: 
  col_name
2     abcd

查询使用pandaseval(),并且在可以使用的范围内受到限制。如果您想使用纯SQL,可以考虑pandasql使用以下语句:

sqldf("select col_name from df where col_name like 'abc%';", locals())

或者,如果pandasstr方法的问题是列不完全是字符串类型,则可以执行以下操作:

df[df.col_name.str.startswith('abc').fillna(False)]

相关问题 更多 >

    热门问题