Spark数据帧使用随机数据添加新列

时间:2017-01-04 08:18:07

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

我想在数据框中添加一个新列,其值包含0或1。 我使用了'randint'函数,

from random import randint

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

但是我收到以下错误,

  

/spark/python/pyspark/sql/dataframe.py“,第1313行,in withColumn       断言isinstance(col,Column),“col应该是列”   AssertionError:col应为Column

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

2 个答案:

答案 0 :(得分:7)

你正在使用python内置随机。这将返回一个特定的值,该值是常量(返回值)。

正如错误消息所示,我们期望一个代表表达式的列。

要做到这一点:

<body ng-app="app">
    <div class="container" ng-controller="labController as vm">
        <h1>Directives</h1>
        <persons data="vm.persons"></persons>
    </div>
</body>

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

答案 1 :(得分:1)

在5到10的整数之间也有类似的问题。我使用了rand()中的pyspark.sql.functions函数

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