簡體   English   中英

如何根據 PySpark 數據框中的另一列刪除數組類型列的值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM