假设我有一个带有此架构的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
包含0表示False,1表示True表示。
cast
功能只能在列上运行而不能在DataFrame
上运行,而withColumn
功能只能在DataFrame
上运行。如何添加新列并同时将其转换为整数?
答案 0 :(得分:10)
您使用的表达式求值为列,因此您可以像这样直接投射:
x.withColumn('y', ((x.a-x.b) / x.c > 1).cast('integer')) # Or IntegerType()