Saya memiliki dua DataFrame:
df1=
+---+----------+
| id|filter |
+---+----------+
| 1| YES|
| 2| NO|
| 3| NO|
+---+----------+
df2 =
+--------------------+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| 11| 12| 13| 14| 15|
+--------------------+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|XXXXXX |NaN|NaN|NaN|NaN|NaN|NaN|NaN|NaN|NaN|NaN|NaN|NaN|NaN|NaN|
+--------------------+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|YYYYYY |NaN|NaN|NaN|NaN|NaN|NaN|NaN|NaN|NaN|NaN|NaN|NaN|NaN|NaN|
+--------------------+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
Yang ingin saya lakukan adalah membuat kolom baru di df1, memfilter nama bidang di df2 berdasarkan nilai baris df1. Output saya akan seperti ini:
df3 =
+---+----------+----------------+
| id|filter | value |
+---+----------+----------------+
| 1| YES|[XXXXXX, YYYYYY]|
| 2| NO| [] |
| 3| NO| [] |
+---+----------+----------------+
Saya tahu cara melakukannya dengan Pandas, tapi saya tidak tahu cara melakukannya dengan PySpark.
Saya sudah mencoba yang berikut ini, tetapi sepertinya tidak berhasil:
df3 = df1.withColumn('value', f.when(df1['filter'] == 'YES', df2.select(f.col('id')).collect()).otherwise(f.lit([]))
Terima kasih banyak