从python列表中添加一个新列在pyspk.sql.dataframe.DataFrame上?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (258)

假设我们有一个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]))
提问于
用户回答回答于

如果要向每一行添加相同的列表,可以使用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]|
#+----+----+------------+

扫码关注云+社区

领取腾讯云代金券