Добавление столбца с логарифмом в Dataframe Pyspark - PullRequest
0 голосов
/ 22 октября 2018

У меня есть фрейм данных, в котором я пытаюсь добавить столбец, который в основном будет брать логарифм существующего столбца в том же фрейме данных.Я пытаюсь это:

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

Я уже проверил схему фрейма данных, и столбец прогнозирования имеет тип с плавающей запятой.Но я продолжаю получать сообщение об ошибке TypeError: требуется float

Что мне здесь не хватает?Любые предложения будут очень полезны

1 Ответ

0 голосов
/ 22 октября 2018

Просто попробуйте использовать имя столбца без фрейма данных, или вы можете использовать функцию 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|
+----------+----+-------------------+
...