【问题标题】:PySpark - Upsample / Resample Time Series DataPySpark - 上采样/重采样时间序列数据
【发布时间】:2020-12-28 07:11:48
【问题描述】:

是否有一种有效的方法来对频率约为 13-15 分钟到 15 分钟的数据进行上采样/重新采样。我有多个 id 和 200M+ 行。

dataframe=spark.createDataFrame([("J1", "2019-12-29 12:07:38", 100), ("J1", "2019-12-29 12:24:25", 200), 
                          ("J1", "2019-12-29 12:37:58", 100), ("J8", "2020-09-09 13:06:36", 300), 
                          ("J8", "2020-09-09 13:21:37", 200), ("J8", "2020-09-09 13:36:38", 400)], 
                          ["id", "date_time", "some_value"]).show()

+---+-------------------+----------+
| id|               date|some_value|
+---+-------------------+----------+
| J1|2019-12-29 12:07:38|       100|
| J1|2019-12-29 12:24:25|       200|
| J1|2019-12-29 12:37:58|       100|
| J8|2020-09-09 13:06:36|       300|
| J8|2020-09-09 13:21:37|       200|
| J8|2020-09-09 13:36:38|       400|
+---+-------------------+----------+

所需的数据框:

+---+-------------------+----------+
| id|               date|some_value|
+---+-------------------+----------+
| J1|2019-12-29 12:15:00|       100|
| J1|2019-12-29 12:30:00|       200|
| J1|2019-12-29 12:45:00|       100|
| J8|2020-09-09 13:00:00|       300|
| J8|2020-09-09 13:15:00|       200|
| J8|2020-09-09 13:30:00|       400|
+---+-------------------+----------+

【问题讨论】:

    标签: python apache-spark datetime pyspark


    【解决方案1】:

    为此有一个函数window。它同时生成startend。您可能需要应用另一个函数来选择最接近的。

    from pyspark.sql import functions as F
    
    df.withColumn("date_time", F.window("date_time", "15 minutes")["end"]).show()
    +---+-------------------+----------+
    | id|          date_time|some_value|
    +---+-------------------+----------+
    | J1|2019-12-29 12:15:00|       100|
    | J1|2019-12-29 12:30:00|       200|
    | J1|2019-12-29 12:45:00|       100|
    | J8|2020-09-09 13:15:00|       300|
    | J8|2020-09-09 13:30:00|       200|
    | J8|2020-09-09 13:45:00|       400|
    +---+-------------------+----------+
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-26
      • 2014-12-15
      • 1970-01-01
      • 1970-01-01
      • 2014-07-24
      相关资源
      最近更新 更多