在Dataframe Pyspark中添加对数列

在Dataframe Pyspark中添加对数列,dataframe,pyspark,logarithm,Dataframe,Pyspark,Logarithm,我有一个数据框,我试图在其中添加一个列,基本上是取同一数据框中现有列的对数。我正在尝试: df = df.withColumn("logvalue", log(df["prediction_column"]) ) 我已经检查了dataframe的模式,预测列是float类型的。但我一直在犯这样的错误 TypeError:需要浮点数 我错过了什么?任何建议都会有很大帮助只要尝试使用不带数据框的列名,或者您可以使用函数col,但这里您必须从pyspark.sql导入。函数导入col,然后日

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

    df = df.withColumn("logvalue", log(df["prediction_column"]) )
我已经检查了dataframe的模式,预测列是float类型的。但我一直在犯这样的错误 TypeError:需要浮点数


我错过了什么?任何建议都会有很大帮助

只要尝试使用不带数据框的列名,或者您可以使用函数
col
,但这里您必须从pyspark.sql导入
。函数导入col
,然后
日志(col(“double\u col”)

df=spark.createDataFrame([
(1.3,“s”),
(10.3,“t”),
(3.3,“x”),
(1.5,“u”),
(1.3,“v”)
],(“双列”、“字符”)
打印df.schema
打印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|
+----------+----+-------------------+

你可以试试下面的方法,它对我有效

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

尝试
log(“预测列”)
仅使用列名称您使用了错误的
log
函数-我猜您正在尝试
numpy.log
math.log
。尝试从pyspark.sql.functions导入日志添加
(这将是自然日志)。知道为什么
np.log
不起作用吗?我没能弄明白这个。。。