我想在数据框中添加一个新列,其值包含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函数为列生成随机值?
答案 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))