web-dev-qa-db-ja.com

DataFrameの新しい派生列をブール値から整数にキャストする

このスキーマを持つDataFramexがあるとします。

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でのみ操作できます。新しい列を追加し、それを同時に整数にキャストするにはどうすればよいですか?

11
Michal

使用する式は列に評価されるため、次のように直接キャストできます。

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