【问题标题】:Conver pyspark column to a list将 pyspark 列转换为列表
【发布时间】:2020-08-13 19:36:17
【问题描述】:

我认为这很容易,但找不到答案:-)

如何将名称列转换为列表。我希望我可以让 isin 工作,而不是加入另一个 datframe 列。但是 isin 似乎需要一个列表(如果我理解正确的话)。

创建数据框:

from pyspark import SparkContext, SparkConf, SQLContext
from datetime import datetime
sc = SparkContext().getOrCreate()
sqlContext = SQLContext(sc)

data2 = [
  ('George', datetime(2010, 3, 24, 3, 19, 58), 3),
  ('Sally', datetime(2009, 12, 12, 17, 21, 30), 5),
  ('Frank', datetime(2010, 11, 22, 13, 29, 40), 2),
  ('Paul', datetime(2010, 2, 8, 3, 31, 23), 8),
  ('Jesus', datetime(2009, 1, 1, 4, 19, 47), 2),
  ('Lou', datetime(2010, 3, 2, 4, 33, 51), 3),
]
 
df2 = sqlContext.createDataFrame(data2, ['name', 'trial_start_time', 'purchase_time'])
df2.show(truncate=False)

应该是这样的:

+------+-------------------+-------------+
|name  |trial_start_time   |purchase_time|
+------+-------------------+-------------+
|George|2010-03-24 07:19:58|3            |
|Sally |2009-12-12 22:21:30|5            |
|Frank |2010-11-22 18:29:40|2            |
|Paul  |2010-02-08 08:31:23|8            |
|Jesus |2009-01-01 09:19:47|2            |
|Lou   |2010-03-02 09:33:51|3            |
+------+-------------------+-------------+

我不确定 collect 是否是我能找到的最接近的。

df2.select("name").collect()

[Row(name='George'),
 Row(name='Sally'),
 Row(name='Frank'),
 Row(name='Paul'),
 Row(name='Jesus'),
 Row(name='Lou')]

关于如何将名称列输出到列表有什么建议吗?

它可能需要看起来像这样:

[乔治、莎莉、弗兰克、保罗、耶稣、卢]

【问题讨论】:

    标签: apache-spark pyspark


    【解决方案1】:

    使用collect_list函数,然后collect获取list变量。

    Example:

    from pyspark.sql.functions import *
    df2.agg(collect_list(col("name")).alias("name")).show(10,False)
    #+----------------------------------------+
    #|name                                    |
    #+----------------------------------------+
    #|[George, Sally, Frank, Paul, Jesus, Lou]|
    #+----------------------------------------+
    
    lst=df2.agg(collect_list(col("name"))).collect()[0][0] 
    lst
    #['George', 'Sally', 'Frank', 'Paul', 'Jesus', 'Lou']
    

    【讨论】:

      猜你喜欢
      • 2020-12-07
      • 2018-07-27
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多