首页 > 解决方案 > pyspark sum 使用开始和结束日期按月份和日期分组

问题描述

我有一个合同数据框:开始期、结束期、每月价格。我试图获得每个月的总收入。

当前数据框:

id      start_period   end_period     montly_price
1       2019-01-01     2019-03-01     30
2       2019-01-01     2019-06-01     20
3       2019-07-01     2020-08-01     10
4       2019-07-01     2020-08-01     10

预期输出:

period          revenue_per_month_all_ids
2019-01         50
2019-02         50
2019-04         20
2019-05         20
2019-06         0
2019-07         20

标签: pyspark

解决方案


假设你没有合同,start_period并且end_period有不同的月份(如果是这种情况,你想如何进行?你能编辑你的问题或评论这篇文章吗?)


import pyspark.sql.functions as psf

df.withColumn("month",psf.month('start_period'))
  .groupBy("period")
  .agg(psf.sum("monthly_price").alias("revenue_per_month_all_ids"))

推荐阅读