PySpark -对列求和,转换为十进制并重命名

c3frrgcw  于 2023-08-02  发布在  Spark
关注(0)|答案(1)|浏览(101)

我有一个pyspark dataframe,其中包含一列数字,我想对它求和、转换并重命名:

  1. simpleData = (("Java",4000,5), \
  2. ("Python", 4600,10), \
  3. ("Scala", 4100,15), \
  4. ("Scala", 4500,15), \
  5. ("PHP", 3000,20), \
  6. )
  7. columns= ["name", "nondiscountedmarketvalue", "discount %"]
  8. # Create DataFrame
  9. df = spark.createDataFrame(data = simpleData, schema = columns)
  10. df.printSchema()
  11. df.show(truncate=False)

字符串
我试过这样的东西:

  1. df.select('name',
  2. df.select(sum(df['nondiscountedmarketvalue'].cast('decimal (18,2)')).alias('sum_marketvalue')))


但后来我收到一个错误说'TypeError:列不可迭代'。
有人能帮帮我吗?

czfnxgou

czfnxgou1#

你可以这样做。

  1. df.select(sum(df.nondiscountedmarketvalue).cast(DecimalType(18,2)).alias('sum_marketvalue')).show()

字符串
您将需要以下导入。

  1. from pyspark.sql.functions import sum
  2. from pyspark.sql.types import DecimalType

相关问题