ฉันมี DataFrames สองอัน:
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|
+--------------------+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
สิ่งที่ฉันต้องการทำคือสร้างคอลัมน์ใหม่ใน df1 โดยกรองชื่อฟิลด์ใน df2 ตามค่าแถวของ df1 ผลลัพธ์ของฉันจะเป็นเช่นนี้:
df3 =
+---+----------+----------------+
| id|filter | value |
+---+----------+----------------+
| 1| YES|[XXXXXX, YYYYYY]|
| 2| NO| [] |
| 3| NO| [] |
+---+----------+----------------+
ฉันรู้วิธีใช้กับ Pandas แต่ฉันไม่รู้ว่าจะทำอย่างไรกับ PySpark
ฉันได้ลองทำสิ่งต่อไปนี้แล้ว แต่ดูเหมือนว่าจะไม่ทำงาน:
df3 = df1.withColumn('value', f.when(df1['filter'] == 'YES', df2.select(f.col('id')).collect()).otherwise(f.lit([]))
ขอบคุณมาก