dask.dataframe.DataFrame.query
dask.dataframe.DataFrame.query¶
- DataFrame.query(expr, **kwargs)[源代码]¶
使用复杂表达式过滤数据框
被阻止的 pd.DataFrame.query 版本
- 参数
- expr: str
要评估的查询字符串。你可以通过用反引号包围它们来引用不是有效 Python 变量名的列名。Dask 不完全支持使用 ‘@’ 字符引用变量,请改用 f-strings 或
local_dict
关键字参数。
注释
这类似于顺序版本,只不过这将在多个线程中同时发生。这可能与
numexpr
发生冲突,因为它本身会使用多个线程。我们建议您将numexpr
设置为使用单个线程:import numexpr numexpr.set_num_threads(1)
示例
>>> import pandas as pd >>> import dask.dataframe as dd >>> df = pd.DataFrame({'x': [1, 2, 1, 2], ... 'y': [1, 2, 3, 4], ... 'z z': [4, 3, 2, 1]}) >>> ddf = dd.from_pandas(df, npartitions=2)
直接引用列名:
>>> ddf.query('y > x').compute() x y z z 2 1 3 2 3 2 4 1
使用反引号引用列名:
>>> ddf.query('`z z` > x').compute() x y z z 0 1 1 4 1 2 2 3 2 1 3 2
使用 f-strings 引用变量名:
>>> value = 1 >>> ddf.query(f'x == {value}').compute() x y z z 0 1 1 4 2 1 3 2
使用
local_dict
引用变量名:>>> ddf.query('x == @value', local_dict={"value": value}).compute() x y z z 0 1 1 4 2 1 3 2