【问题标题】:Combine multiple rows with the same timestamp and put values into new columns合并具有相同时间戳的多行并将值放入新列
【发布时间】:2021-10-06 14:29:47
【问题描述】:

假设我的输入 df 如下所示:

Timestamp name value
14:00:00 A 25
14:00:00 B 24
15:00:00 A 20
15:00:00 C 21
16:00:00 A 20
16:00:00 B 22
16:00:00 C 23
16:00:00 D 24

我现在想做的是合并依赖于时间戳的行,但是在合并时将具有相应值的名称放入新列以实现以下目的:

Timestamp A B C D
14:00:00 25 24 nan nan
15:00:00 20 nan 21 nan
16:00:00 20 22 23 24

我可以使用 Pyspark 的一些内置函数来实现这一点吗?如果方法尽可能通用,那就太好了。

【问题讨论】:

    标签: python pyspark databricks data-analysis


    【解决方案1】:

    您只需要在 pyspark 中 pivot 即可使用 pivot 实现如下所示的旋转

    df = spark.createDataFrame(
    [('14:00:00','A',25),
    ('14:00:00','B',24),
    ('15:00:00','A',20),
    ('15:00:00','C',21),
    ('16:00:00','A',20),
    ('16:00:00','B',22),
    ('16:00:00','C',23),
    ('16:00:00','D',24)],("Timestamp", "name", "value"))
    
    
    df1 = df.groupBy("Timestamp").pivot("name").sum("value")
    
    df1.show() # this should display the expected results
    

    【讨论】:

      猜你喜欢
      • 2022-10-26
      • 1970-01-01
      • 2016-12-27
      • 1970-01-01
      • 2021-07-16
      • 1970-01-01
      • 2018-05-24
      • 2021-04-26
      • 1970-01-01
      相关资源
      最近更新 更多