このスキーマを持つ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
でのみ操作できます。新しい列を追加し、それを同時に整数にキャストするにはどうすればよいですか?
使用する式は列に評価されるため、次のように直接キャストできます。
x.withColumn('y', ((x.a-x.b) / x.c > 1).cast('integer')) # Or IntegerType()