将DataFrame中的一个新派生列从布尔类型转换为整数类型
将DataFrame中的一个新派生列从布尔类型转换为整数类型
假设我有一个带有以下模式的DataFrame x
:
xSchema = StructType([ \ StructField("a", DoubleType(), True), \ StructField("b", DoubleType(), True), \ StructField("c", DoubleType(), True)])
然后我有了DataFrame:
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
的值为False时为0,为True时为1。
cast
函数只能对列进行操作,而不是DataFrame,withColumn
函数只能对DataFrame进行操作。我如何同时添加一个新列并将其转换为整数?
Casting a new derived column in a DataFrame from boolean to integer
在使用DataFrame时,有时我们需要根据已有列的条件来创建一个新的派生列。在这个过程中,有时候我们需要将布尔类型的列转换为整数类型的列。本文旨在探讨如何在DataFrame中将布尔类型的派生列转换为整数类型的派生列,并提供解决方法。
问题的出现原因:
问题的出现是因为在DataFrame中,我们无法直接将布尔类型的列转换为整数类型的列。在某些情况下,我们可能需要将布尔类型的派生列转换为整数类型的派生列,以便进行进一步的分析和计算。
解决方法:
为了解决这个问题,我们可以使用`withColumn`方法和`cast`方法来实现将布尔类型的列转换为整数类型的列。具体的解决方法如下所示:
x.withColumn('y', ((x.a-x.b) / x.c > 1).cast('integer')) # Or IntegerType()
上述代码中,`x`表示DataFrame对象,`a`、`b`和`c`分别表示已有的列。通过计算`(x.a-x.b) / x.c > 1`的结果,并使用`cast`方法将其转换为整数类型,然后将其赋值给新的派生列`y`。
通过以上的解决方法,我们可以将布尔类型的派生列转换为整数类型的派生列,从而满足进一步分析和计算的需求。
本文介绍了在DataFrame中将布尔类型的派生列转换为整数类型的派生列的解决方法。通过使用`withColumn`方法和`cast`方法,我们可以实现将布尔类型的列转换为整数类型的列,并满足进一步分析和计算的需求。希望本文对您在使用DataFrame时遇到的类似问题有所帮助。