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


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

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

用法:

DataFrame.join(right: pyspark.pandas.frame.DataFrame, on: Union[Any, Tuple[Any, …], List[Union[Any, Tuple[Any, …]]], None] = None, how: str = 'left', lsuffix: str = '', rsuffix: str = '') → pyspark.pandas.frame.DataFrame

加入另一個 DataFrame 的列。

在索引或鍵列上使用 right DataFrame 連接列。通過傳遞列表,按索引一次有效地連接多個DataFrame對象。

參數

right: DataFrame, Series
on: str, list of str, or array-like, optional

調用者中要加入 right 中的索引的列或索引級別名稱,否則加入 index-on-index。如果給定多個值,則 right DataFrame 必須具有 MultiIndex。如果調用 DataFrame 中尚未包含數組,則可以傳遞數組作為連接鍵。類似於 Excel VLOOKUP 運算。

how: {‘left’, ‘right’, ‘outer’, ‘inner’}, default ‘left’

如何處理這兩個對象的操作。

  • 左:使用 left 框架的索引(或指定的列)。

  • 右:使用 right 的索引。

  • 外部:將left框架的索引(或指定了on的列)與右索引形成聯合,並對其進行排序。按字典順序。

  • 內部:形成left框架的索引(或指定了on的列)與right的索引的交集,保持left的順序。

lsuffixstr,默認“”

從左框架的重疊列中使用的後綴。

rsuffixstr,默認“”

使用 right 框架的重疊列的後綴。

返回

DataFrame

包含來自 leftright 的列的 DataFrame 。

注意

傳遞 DataFrame 對象列表時,不支持 on、lsuffix 和 rsuffix 參數。

例子

>>> psdf1 = ps.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
...                      'A': ['A0', 'A1', 'A2', 'A3']},
...                     columns=['key', 'A'])
>>> psdf2 = ps.DataFrame({'key': ['K0', 'K1', 'K2'],
...                      'B': ['B0', 'B1', 'B2']},
...                     columns=['key', 'B'])
>>> psdf1
  key   A
0  K0  A0
1  K1  A1
2  K2  A2
3  K3  A3
>>> psdf2
  key   B
0  K0  B0
1  K1  B1
2  K2  B2

使用索引加入DataFrames。

>>> join_psdf = psdf1.join(psdf2, lsuffix='_left', rsuffix='_right')
>>> join_psdf.sort_values(by=join_psdf.columns)
  key_left   A key_right     B
0       K0  A0        K0    B0
1       K1  A1        K1    B1
2       K2  A2        K2    B2
3       K3  A3      None  None

如果我們想使用鍵列進行連接,我們需要將 key 設置為 df 和 right 中的索引。連接的 DataFrame 將以 key 作為索引。

>>> join_psdf = psdf1.set_index('key').join(psdf2.set_index('key'))
>>> join_psdf.sort_values(by=join_psdf.columns) 
      A     B
key
K0   A0    B0
K1   A1    B1
K2   A2    B2
K3   A3  None

使用鍵列連接的另一個選項是使用 on 參數。 DataFrame.join 總是使用右索引,但我們可以使用 df 中的任何列。與 pandas 不同,此方法不會在結果中保留原始 DataFrame 的索引。

>>> join_psdf = psdf1.join(psdf2.set_index('key'), on='key')
>>> join_psdf.index
Int64Index([0, 1, 2, 3], dtype='int64')

相關用法


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