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))