我需要一个udf函数来输入dataframe的数组列,并对其中的两个字符串元素执行相等性检查。我的Dataframe有这样一个模式。
IDDATEOPTION12021-01-06[“红色”,“绿色”]22021-01-07[“蓝色”,“蓝色”]32021-01-08[“蓝色”,“黄色”]42021-01-09nan
我试过这个:
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())
但它抛出了索引错误。我确信options列是字符串数组。期望是:
iddateoptionsequality\u check12021-01-06[‘红色’,‘绿色’]022021-01-07[‘蓝色’,‘蓝色’]132021-01-08[‘蓝色’,‘黄色’]042021-01-09nan-1
1条答案
按热度按时间pcrecxhr1#
你可以检查一下
options
列表已定义或其长度小于2,而不是使用try/except。下面是一个工作示例:但是,我建议您不要使用自定义项,因为您可以仅使用内置函数执行相同的操作: