當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python pyspark DataFrame.query用法及代碼示例


本文簡要介紹 pyspark.pandas.DataFrame.query 的用法。

用法:

DataFrame.query(expr: str, inplace: bool = False) → Optional[pyspark.pandas.frame.DataFrame]

使用布爾表達式查詢 DataFrame 的列。

注意

以‘__’ 前綴開頭的內部列可以訪問,但是它們不應該被訪問。

注意

此 API 委托給 Spark SQL,因此語法遵循 Spark SQL。因此,不支持 pandas 特定的語法,例如 @。如果你想要 pandas 語法,你可以使用 DataFrame.pandas_on_spark.apply_batch() ,但你應該知道 query_func 將以分布式方式在不同的節點上執行。因此,例如,要使用@ 語法,請確保變量被序列化,例如,將其放在閉包中,如下所示。

>>> df = ps.DataFrame({'A': range(2000), 'B': range(2000)})
>>> def query_func(pdf):
...     num = 1995
...     return pdf.query('A > @num')
>>> df.pandas_on_spark.apply_batch(query_func)
         A     B
1996  1996  1996
1997  1997  1997
1998  1998  1998
1999  1999  1999

參數

exprstr

要評估的查詢字符串。

您可以通過用反引號括起來來引用包含空格的列名。

例如,如果您的一列稱為 a a 並且您想將其與 b 相加,則您的查詢應該是 `a a` + b

inplacebool

查詢是否應就地修改數據或返回修改後的副本。

返回

DataFrame

DataFrame 由提供的查詢表達式生成。

例子

>>> df = ps.DataFrame({'A': range(1, 6),
...                    'B': range(10, 0, -2),
...                    'C C': range(10, 5, -1)})
>>> df
   A   B  C C
0  1  10   10
1  2   8    9
2  3   6    8
3  4   4    7
4  5   2    6
>>> df.query('A > B')
   A  B  C C
4  5  2    6

前麵的表達式等價於

>>> df[df.A > df.B]
   A  B  C C
4  5  2    6

對於名稱中帶有空格的列,您可以使用反引號。

>>> df.query('B == `C C`')
   A   B  C C
0  1  10   10

前麵的表達式等價於

>>> df[df.B == df['C C']]
   A   B  C C
0  1  10   10

相關用法


注:本文由純淨天空篩選整理自spark.apache.org大神的英文原創作品 pyspark.pandas.DataFrame.query。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。