【发布时间】:2021-05-12 17:06:28
【问题描述】:
我需要一个 udf 函数来输入数据框的数组列,并对其中的两个字符串元素执行相等性检查。我的数据框有这样的架构。
| ID | date | options |
|---|---|---|
| 1 | 2021-01-06 | ['red', 'green'] |
| 2 | 2021-01-07 | ['Blue', 'Blue'] |
| 3 | 2021-01-08 | ['Blue', 'Yellow'] |
| 4 | 2021-01-09 | nan |
我已经试过了:
def equality_check(options: list):
try:
if options[0] == options[1]:
return 1
else:
return 0
except:
return -1
equality_udf = f.udf(equality_check, t.IntegerType())
但它抛出了索引错误。我相信选项列是字符串数组。 期望是这样的:
| ID | date | options | equality_check |
|---|---|---|---|
| 1 | 2021-01-06 | ['red', 'green'] | 0 |
| 2 | 2021-01-07 | ['Blue', 'Blue'] | 1 |
| 3 | 2021-01-08 | ['Blue', 'Yellow'] | 0 |
| 4 | 2021-01-09 | nan | -1 |
【问题讨论】:
标签: apache-spark pyspark apache-spark-sql user-defined-functions pyspark-dataframes