PySparkのexceptAllとsubtractの違い
2022-08-26
2022-08-26
はじめに
PySparkのexceptAllとsubtractは、一方のDataFrameにはあるが他方のDataFrameにはない行を返します。 今回はexceptAllとsubtractの違いを調べてみた。
- exceptAllは重複する行を保持する。
- subtractは重複する行を削除する。
検証コード
```# DataFrame df1を作成
data1 = [("Alice", 20), ("James", 25), ("Maria", 30), ("Alice", 20)]
df1 = spark.createDataFrame(data1, ["name", "age"])
df1.show()
# 結果:
# +-----+---+
# | name|age|
# +-----+---+
# |Alice| 20|
# |James| 25|
# |Maria| 30|
# |Alice| 20|
# +-----+---+
# DataFrame df2を作成
data2 = [("Alice", 20), ("Michael", 21), ("Maria", 22)]
df2 = spark.createDataFrame(data2, ["name", "age"])
df2.show()
# 結果:
# +-------+---+
# | name|age|
# +-------+---+
# | Alice| 20|
# |Michael| 21|
# | Maria| 22|
# +-------+---+
df = df1.exceptAll(df2)
df.show()
# 結果:
# +-----+---+
# | name|age|
# +-----+---+
# |Alice| 20|
# |James| 25|
# |Maria| 30|
# +-----+---+
df = df1.subtract(df2)
df.show()
# 結果:
# +-----+---+
# | name|age|
# +-----+---+
# |James| 25|
# |Maria| 30|
# +-----+---+
```