在DataFrame中将一个新派生列从布尔值转换为整数

2024-06-30 17:22:53 发布

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

假设我有一个数据帧x与此架构:

xSchema = StructType([ \
    StructField("a", DoubleType(), True), \
    StructField("b", DoubleType(), True), \
    StructField("c", DoubleType(), True)])

然后我得到了数据框:

DataFrame[a :double, b:double, c:double]

我想要一个整数派生列。我可以创建布尔列:

x = x.withColumn('y', (x.a-x.b)/x.c > 1)

我的新架构是:

DataFrame[a :double, b:double, c:double, y: boolean]

但是,我希望列y包含0表示False,1表示True。

cast函数只能在列上操作,不能在DataFrame上操作,withColumn函数只能在DataFrame上操作。如何添加新列并同时将其转换为整数?


Tags: 数据函数falsetruedataframe架构整数double
1条回答
网友
1楼 · 发布于 2024-06-30 17:22:53

使用的表达式求值为列,因此可以直接按如下方式强制转换:

x.withColumn('y', ((x.a-x.b) / x.c > 1).cast('integer')) # Or IntegerType()

相关问题 更多 >