Yue*_*Lyu 4 python apache-spark apache-spark-sql pyspark pyspark-sql
我有一个数据帧df创建如下,
schema = StructType([StructField('Id', StringType(), False),
StructField('Value', FloatType(), False)])
df = spark.createDataFrame([('a',5.0),('b',1.0),('c',-0.3)],schema)
Run Code Online (Sandbox Code Playgroud)
看起来像
+---+-----+
| Id|Value|
+---+-----+
| a| 5.0|
| b| 1.0|
| c| -0.3|
+---+-----+
Run Code Online (Sandbox Code Playgroud)
现在我想取"值"的绝对值,它应该返回
+---+-----+
| Id|Value|
+---+-----+
| a| 5.0|
| b| 1.0|
| c| 0.3|
+---+-----+
Run Code Online (Sandbox Code Playgroud)
我试过了
df = df.withColumn('Value',math.fabs(df.Value))
Run Code Online (Sandbox Code Playgroud)
但它抱怨TypeError:需要一个浮点数.但是,Value列是使用FloatType()指定的.
有关如何正确执行此操作的任何线索?谢谢!
mto*_*oto 14
您可以使用本机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|
+---+-----+
Run Code Online (Sandbox Code Playgroud)