pyspark数据框将多列转换为浮点数
问题内容:
我正在尝试将数据框的多列从字符串转换为浮动
df_temp = sc.parallelize([("1", "2", "3.4555"), ("5.6", "6.7", "7.8")]).toDF(("x", "y", "z"))
df_temp.select(*(float(col(c)).alias(c) for c in df_temp.columns)).show()
但我得到了错误
select() argument after * must be a sequence, not generator
我不明白为什么会引发此错误
问题答案:
float()
不是Spark函数,您需要该函数cast()
:
from pyspark.sql.functions import col
df_temp.select(*(col(c).cast("float").alias(c) for c in df_temp.columns))