次のように作成されたデータフレームdfがあります。
schema = StructType([StructField('Id', StringType(), False),
StructField('Value', FloatType(), False)])
df = spark.createDataFrame([('a',5.0),('b',1.0),('c',-0.3)],schema)
のように見えます
+---+-----+
| Id|Value|
+---+-----+
| a| 5.0|
| b| 1.0|
| c| -0.3|
+---+-----+
ここで、「Value」の絶対値を取得したいと思います。
+---+-----+
| Id|Value|
+---+-----+
| a| 5.0|
| b| 1.0|
| c| 0.3|
+---+-----+
私はもう試した
df = df.withColumn('Value',math.fabs(df.Value))
しかし、文句を言いますTypeError:floatが必要です。ただし、Value列はFloatType()で指定されました。
これを正しく行う方法についての手がかりはありますか?ありがとう!
ネイティブのSpark
関数abs()
を使用できます。
from pyspark.sql.functions import abs
df1 = df.withColumn('Value',abs(df.Value))
df1.show()
+---+-----+
| Id|Value|
+---+-----+
| a| 5.0|
| b| 1.0|
| c| 0.3|
+---+-----+