You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PySpark中用for循环添加哈希列报错,求解决方案

解决PySpark DataFrame添加哈希列的类型错误问题

问题根源

报错提示说明你的f_pseudo_cols列表里的元素不是列名字符串,而是Row对象(比如Row(field_name='Swis Code')),而sha2()函数需要接收字符串列名或Column对象作为第一个参数,直接传入Row对象就会触发类型错误。

解决方法

你需要从每个Row对象中提取出实际的列名字符串,再传入sha2()函数。假设每个Row对象的列名存储在field_name属性中,修改后的代码如下:

from pyspark.sql.functions import sha2

# 提取Row对象中的field_name作为列名
df.select("*", [sha2(c.field_name, 256).alias(f"hashed_{c.field_name}") for c in f_pseudo_cols])

额外注意事项

  • 如果Row对象存储列名的属性不是field_name,可以先打印f_pseudo_cols查看结构(比如print(f_pseudo_cols)),确认实际属性名后替换即可。
  • 注意列名的大小写匹配:原DataFrame中的列是"Swis code",但Row里是"Swis Code",如果DataFrame列名是大小写敏感的,需要确保提取的列名和实际列名完全一致,否则会报列不存在的错误。

内容的提问来源于stack exchange,提问作者Krishna08

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 18:03:09