在为我的dataframe创建一个新列时,如何避免这个typeerror,该列将另一列中的值相乘

zsbz8rwp  于 2021-07-12  发布在  Spark
关注(0)|答案(1)|浏览(428)

我试图添加一个列,将比特币值转换为gbp到pyspark中的Dataframe中,但是当我运行代码时,我得到了一个类型错误。我试图创建一个与列类型相同的变量来避免这种情况,但无法解决此错误。

bc_value = DecimalType("4000")
df_j2 = df_j2.withColumn("value",df_j2["value"].cast(DecimalType()))
df_group = df_j2.groupBy("pubkey").sum("value")
df_final = df_group.sort(df_group["sum(value)"].desc()).limit(10)
df_with_pound = df_final.withColumn("pound", col(bc_value*("value")
df_with_pound.show()

以下是屏幕上显示的错误:

iyfamqjs

iyfamqjs1#

代码中存在一些语法错误,包括如何定义十进制列以及如何使用列。您可以尝试以下代码:

from pyspark.sql.types import *
from pyspark.sql.functions import col, lit

bc_value = lit(4000).cast(DecimalType())
df_with_pound = df_final.withColumn("pound", col("value") * bc_value)

相关问题