使用pyspark计算每行数据帧中的总值

Posted

技术标签:

【中文标题】使用pyspark计算每行数据帧中的总值【英文标题】:Count total values in each row of dataframe using pyspark 【发布时间】:2019-10-12 16:39:40 【问题描述】:

我在数据框中有一列,每一行都有一个用逗号分隔的日期列表。我想创建一个名为 date_count 的新列,其中包含每行的日期数。我尝试使用 pandas,但我想在 pyspark 中实现它,而且我也是 spark 新手。

df['date_count'] = 0
    for index in df.index.tolist():
        for i in (df.loc[[index],'date']):
            date_list = i.split(",")
            df.loc[[index],'date_count'] = len(date_list)

【问题讨论】:

【参考方案1】:

下面是我的 pyspark 代码:

values = [
  (1,"2019-10-11, 2019-10-12, 2019-10-13, 2019-10-14, 2019-10-15"),
  (2,"2019-11-11, 2019-11-12, 2019-11-17, 2019-11-18")
  ]

rdd = sc.parallelize(values)
schema = StructType([
    StructField("id", IntegerType(), True),StructField("dates", StringType(), True)
])

data = spark.createDataFrame(rdd, schema)

data.createOrReplaceTempView("data")
spark.sql("""select id, 
                    dates, 
                    size(split(dates, ",")) as date_count 
              from data""").show(20,False)

结果:

+---+----------------------------------------------------------+----------+
|id |dates                                                     |date_count|
+---+----------------------------------------------------------+----------+
|1  |2019-10-11, 2019-10-12, 2019-10-13, 2019-10-14, 2019-10-15|5         |
|2  |2019-11-11, 2019-11-12, 2019-11-17, 2019-11-18            |4         |
+---+----------------------------------------------------------+----------+

【讨论】:

以上是关于使用pyspark计算每行数据帧中的总值的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 spark.read.jdbc 读取不同 Pyspark 数据帧中的多个文件

删除 pyspark 数据帧中的空格

pyspark 数据帧中的完全外连接

pyspark,比较数据帧中的两行

x00 出现在 Pyspark 数据帧中的每个字符之间

Pyspark:内部连接两个 pyspark 数据帧并从第一个数据帧中选择所有列,从第二个数据帧中选择几列