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


Python PySpark DataFrame unionByName方法用法及代碼示例


PySpark DataFrame 的 unionByName(~) 方法通過對齊列標簽來垂直連接 PySpark DataFrame。

參數

1. other | PySpark DataFrame

另一個要連接的DataFrame。

2. allowMissingColumns | boolean | optional

  • 如果是True,那麽如果兩個DataFrames的列標簽不對齊,則不會拋出錯誤。如果出現錯位,則將設置 null 值。

  • 如果是False,那麽如果兩個DataFrames的列標簽不對齊,將會拋出錯誤。

默認情況下,allowMissingColumns=False

返回值

一個新的PySpark DataFrame

例子

通過對齊列垂直連接 PySpark DataFrame

考慮以下PySpark DataFrame:

df1 = spark.createDataFrame([[1, 2, 3]], ["A", "B", "C"])
df1.show()



+---+---+---+
|  A|  B|  C|
+---+---+---+
|  1|  2|  3|
+---+---+---+

這是另一個PySpark DataFrame:

df2 = spark.createDataFrame([[4, 5, 6], [7, 8, 9]], ["A", "B", "C"])
df2.show()



+---+---+---+
|  A|  B|  C|
+---+---+---+
|  4|  5|  6|
|  7|  8|  9|
+---+---+---+

要通過對齊列來垂直連接這兩個DataFrames:

df1.unionByName(df2).show()



+---+---+---+
|  A|  B|  C|
+---+---+---+
|  1|  2|  3|
|  4|  5|  6|
|  7|  8|  9|
+---+---+---+
處理列標簽不匹配的情況

默認情況下, allowMissingColumns=False ,這意味著如果兩個 DataFrames 沒有完全匹配的列標簽,則會拋出錯誤。

例如,考慮以下PySpark DataFrame:

df1 = spark.createDataFrame([[1, 2, 3]], ["A", "B", "C"])
df1.show()



+---+---+---+
|  A|  B|  C|
+---+---+---+
|  1|  2|  3|
+---+---+---+

這是其他 PySpark DataFrame,其列標簽略有不同:

df2 = spark.createDataFrame([[4, 5, 6], [7, 8, 9]], ["B", "C", "D"])
df2.show()



+---+---+---+
|  B|  C|  D|
+---+---+---+
|  4|  5|  6|
|  7|  8|  9|
+---+---+---+

由於列標簽不匹配,調用 unionByName(~) 將導致錯誤:

df1.unionByName(df2).show()   # allowMissingColumns=False



AnalysisException: Cannot resolve column name "A" among (B, C, D)

要允許未對齊的列,請設置 allowMissingColumns=True

df1.unionByName(df2, allowMissingColumns=True).show()



+----+---+---+----+
|   A|  B|  C|   D|
+----+---+---+----+
|   1|  2|  3|null|
|null|  4|  5|   6|
|null|  7|  8|   9|
+----+---+---+----+

請注意我們如何為未對齊的列獲取 null 值。

相關用法


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