在Dataframe Pyspark中添加具有对数的列

时间:2018-10-22 12:52:01

标签: dataframe pyspark logarithm

我有一个数据框,我试图在其中添加一列,该列基本上将采用同一数据框中现有列的对数。我正在尝试:

    df = df.withColumn("logvalue", log(df["prediction_column"]) )

我已经检查了数据框的架构,并且预测列为浮点型。但是我不断收到这样的错误    TypeError:必须为浮点数

我在这里想念什么?任何建议都会有很大帮助

2 个答案:

答案 0 :(得分:0)

您可以尝试以下方法,它对我有用

from pyspark.sql.functions import col
df = df.withColumn("logvalue", log10(col("prediction_column"))

答案 1 :(得分:-3)

只需尝试在不使用数据框的情况下使用列名,或者可以使用函数col,但是在这里您必须先导入from pyspark.sql.functions import col,然后再导入log(col("double_col"))

df = spark.createDataFrame([
(1.3 ,"s"),
(10.3 ,"t"),
(3.3 ,"x"),
(1.5 ,"u"),
(1.3 ,"v")
], ("double_col", "char"))

print df.schema
print df.withColumn("bla", log("double_col")).show()

输出:

StructType(List(StructField(double_col,DoubleType,true),StructField(char,StringType,true)))
+----------+----+-------------------+
|double_col|char|                bla|
+----------+----+-------------------+
|       1.3|   s|0.26236426446749106|
|      10.3|   t|   2.33214389523559|
|       3.3|   x| 1.1939224684724346|
|       1.5|   u| 0.4054651081081644|
|       1.3|   v|0.26236426446749106|
+----------+----+-------------------+