在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
不起作用吗?我没能弄明白这个。。。