我有一个约3千万行,3列['id','date','val']的spark数据帧 和一个嵌套字典,形式为
dict = {
'A' = {
'2018-09-31' = val1,
'2018-10-01' = val2
}
}
A是ID列,日期还有另一列。 我正在尝试基于此嵌套更新另一列中的val 例如,可通过dict ['A'] ['2018-09-31']访问的字典。 另外,仅当列表indexList中包含A时,才进行更新。
我已经查看并尝试了以下方法:
类似下面的方法不起作用
update_func = (F.when(F.col('id').isin(indexList), mydict[F.col('id')][F.col('date')]).otherwise(F.col('val')))
df = df.withColumn('new_val, update_func)
我收到的错误消息是无法散列的类型:“列”
更新:我通过创建一个新的字符串键列来合并两个用作键的列,从而避免了这个问题