[英]Pyspark replace values on array column based on another dataframe
[英]How to remove values of an array type column based on another column in a PySpark dataframe?
假設我在 df 中有兩列:一列是日期,另一列是日期數組。
示例行:
Date: 2020-03-01,
Array_of_dates: ['2020-01-01', '2020-02-01', '2020-04-01', '2020-05-01']
如何創建另一列排除小於Date
的數組值,然后返回剩余的最小日期(讀取:最小的高於“Date”的值)。
這將是結果:
Date: 2020-03-01,
Array_of_dates: ['2020-01-01', '2020-02-01', '2020-04-01', '2020-05-01']
Smallest_higher_date: 2020-04-01
我找到了array_remove
函數,但據我所知,它只允許排除特定值而不允許計算。
您可以使用 udf 來實現一個函數並將其傳遞給兩列。
df2 = df.withColumn(
'dates_after_date',
udf(
lambda date, dates: [d for d in dates if d > date],
ArrayType(StringType())
)('date', 'array_of_dates')
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.