Я ищу способ найти разницу в значениях, в столбцах двух DataFrame, например:Разница между двумя DataFrames колоннами в pypark
from pyspark.sql import SQLContext
sc = SparkContext()
sql_context = SQLContext(sc)
df_a = sql_context.createDataFrame([("a", 3), ("b", 5), ("c", 7)], ["name", "id"])
df_b = sql_context.createDataFrame([("a", 3), ("b", 10), ("c", 13)], ["name", "id"])
DataFrame A:
+ ---- + --- +
|name| id|
+----+---+
| a| 3|
| b| 5|
| c| 7|
+----+---+
DataFrame Б:
+----+---+
|name| id|
+----+---+
| a| 3|
| b| 10|
| c| 13|
+----+---+
Моя цель list
из id
элементов столбца, которые находятся в A, но не в B, например: [5, 7]
. Я думал о присоединении к id
, но я не вижу в этом хорошего способа сделать это.
Наивное решение может быть:
list_a = df_a.select("id").rdd.map(lambda x: x.asDict()["id"]).collect()
list_b = df_b.select("id").rdd.map(lambda x: x.asDict()["id"]).collect()
result = list(set(list_a).difference(list_b))
Но есть простое решение, которое может быть получено только с DataFrame операций, за исключением, возможно, окончательное Collect.
Действительно полезно, спасибо. – Akavall