如何一次转换多个Spark数据帧列类型?

2024-10-01 02:37:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我的Spark数据帧中有1000列。我有一个下面的函数来逐个转换列类型。但我希望能够一次将所有列类型转换为double类型。下面的代码对于一次处理一列很有用。在

def convertcolumn(df, name, new_type):
    df_1 = df.withColumnRenamed(name, "swap")
    return df_1.withColumn(name, df_1["swap"].cast(new_type)).drop("swap")

Tags: 数据函数代码name类型dfnewreturn
1条回答
网友
1楼 · 发布于 2024-10-01 02:37:57

例如,可以折叠列:

from functools import reduce

mapping = [("x", "double"), ("y", "integer")]
df = sc.parallelize([("1.0", "1", "foo")]).toDF(["x", "y", "z"])
reduce(lambda df, kv: convertcolumn(*(df, ) + kv), mapping, df)

或者简单地构建一个表达式列表和select

^{pr2}$

相关问题 更多 >