gpt4 book ai didi

pandas - pyspark:在日期和时间重新采样 pyspark 数据帧

转载 作者:行者123 更新时间:2023-12-03 23:06:04 24 4
gpt4 key购买 nike

如何重新采样 pyspark 数据帧,就像在 Pandas 中一样,我们有 pd.grouper 和 pd.resample,我可以在 h、2h、3h、周重新采样。我有以下示例 pyspark 数据框,我如何在列 ind 和 date 以及每隔 h/2h/3h 聚合它

from pyspark import SparkContext
from pyspark.sql import SQLContext

sc = SparkContext.getOrCreate()
sqlContext = SQLContext(sc)

a = sqlContext.createDataFrame([["Anand", "2020-02-01 16:00:00", 12, "ba"],
["Anand", "2020-02-01 16:05:00", 7, "ba" ]
["Anand", "2020-02-02 19:10:00", 14,"sa"],
["Carl", "2020-02-01 16:00:00", 16,"da"],
["Carl", "2020-02-02 16:02:00", 12,"ga"],
["Carl", "2020-02-02 17:10:00", 1,"ga"],
["Eric", "2020-02-01 16:o0:00", 24, "sa"]], ['ind',"date","sal","imp"])
a.show()

| ind| date|sal|imp|
+-----+-------------------+---+---+
|Anand|2020-02-01 16:00:00| 12| ba|
|Anand|2020-02-01 16:05:00| 7| sa|
|Anand|2020-02-02 19:10:00| 14| sa|
| Carl|2020-02-01 16:00:00| 16| da|
| Carl|2020-02-01 16:02:00| 12| ga|
| Carl|2020-02-02 17:10:00| 1| ga|
| Eric|2020-02-01 16:00:00| 24| sa|
因此,当在列 ind 上聚合并在日期(每小时)和销售平均值上重新采样时,所需的输出可能看起来像
|  ind|               date|sal|
+-----+-------------------+---+
|Anand|2020-02-01 16:00:00| 9|
|Anand|2020-02-02 19:00:00| 14|
| Carl|2020-02-01 16:00:00| 9|
| Carl|2020-02-02 17:00:00| 1|
| Eric|2020-02-01 16:00:00| 24|

最佳答案

您可以完全按照问题中已经描述的方式进行操作:group by inddate .在 date_trunc 的帮助下我们可以在分组前将日期列四舍五入到小时:

from pyspark.sql import functions as F
a.groupBy('ind', F.date_trunc('hour', F.col('date')).alias('date'))\
.agg(F.mean('sal')) \
.orderBy('ind', 'date') \
.show()
打印
+-----+-------------------+--------+
| ind| date|avg(sal)|
+-----+-------------------+--------+
|Anand|2020-02-01 16:00:00| 9.5|
|Anand|2020-02-02 19:00:00| 14.0|
| Carl|2020-02-01 16:00:00| 14.0|
| Carl|2020-02-02 17:00:00| 1.0|
| Eric|2020-02-01 16:00:00| 24.0|
+-----+-------------------+--------+

关于pandas - pyspark:在日期和时间重新采样 pyspark 数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62623157/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com