【问题标题】:Spark dataframe add new column with random dataSpark数据框添加带有随机数据的新列
【发布时间】:2017-05-18 11:13:32
【问题描述】:

我想向数据框添加一个新列,其值由 0 或 1 组成。 我使用了'randint'函数,

from random import randint

df1 = df.withColumn('isVal',randint(0,1))

但我收到以下错误,

/spark/python/pyspark/sql/dataframe.py",第 1313 行,在 withColumn 中 断言 isinstance(col, Column), "col 应该是 Column" AssertionError: col 应该是 Column

如何使用自定义函数或 randint 函数为列生成随机值?

【问题讨论】:

    标签: python apache-spark pyspark apache-spark-sql


    【解决方案1】:

    对于从 5 到 10 的整数值也有类似的问题。我使用了来自 pyspark.sql.functionsrand() 函数

    from pyspark.sql.functions import *
    df1 = df.withColumn("random", round(rand()*(10-5)+5,0))
    

    【讨论】:

      【解决方案2】:

      您正在使用 python 内置随机。这将返回一个恒定的特定值(返回值)。

      如错误消息所示,我们需要一个表示表达式的列。

      要做到这一点:

      from pyspark.sql.functions import rand,when
      df1 = df.withColumn('isVal', when(rand() > 0.5, 1).otherwise(0))
      

      这将给出 0 和 1 之间的均匀分布。有关更多选项,请参阅函数文档 (http://spark.apache.org/docs/latest/api/python/pyspark.sql.html#module-pyspark.sql.functions)

      【讨论】:

        猜你喜欢
        • 2016-04-30
        • 2015-11-19
        • 1970-01-01
        • 2018-05-10
        • 1970-01-01
        • 2016-04-26
        • 1970-01-01
        • 1970-01-01
        • 2021-12-07
        相关资源
        最近更新 更多