假设我们有一个DataFrame
由以下创建的PySpark 。
import pyspark
from pyspark.sql import SQLContext
sc = pyspark.SparkContext()
sqlContext = SQLContext(sc)
columns = ['dogs', 'cats']
vals = [
(1, 2),
(2, 0),
(0, 0),
(2, 5)
]
df = sqlContext.createDataFrame(vals, columns)
DataFrame
如果我们的列是列表,我们如何添加新列。
我尝试了以下的事情,但没有任何效果:
from pyspark.sql import functions as F
df=df.withColumn('new', F.lit([1,2,3,4]))
df=df.withColumn('new2', F.column([1,2,3,4]))
发布于 2018-08-02 14:54:32
如果要向每一行添加相同的列表,可以使用pyspark.sql.functions.array
详情如下:
df=df.withColumn('new', F.array([F.lit(x) for x in [1,2,3,4]]))
df.show()
#+----+----+------------+
#|dogs|cats| new|
#+----+----+------------+
#| 1| 2|[1, 2, 3, 4]|
#| 2| 0|[1, 2, 3, 4]|
#| 0| 0|[1, 2, 3, 4]|
#| 2| 5|[1, 2, 3, 4]|
#+----+----+------------+
https://stackoverflow.com/questions/-100001873
复制相似问题