pysp中的月度汇总

2024-09-30 01:26:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我在寻找一种按月汇总数据的方法。我想先在我的访问日期只保留一个月。我的数据框如下所示:

Row(visitdate = 1/1/2013, 
patientid = P1_Pt1959, 
amount = 200, 
note = jnut, 
) 

我随后的目标是按访问日期分组并计算金额总和。我试过了:

^{pr2}$

结果是:

visitdate|totalamount|
+----------+-----------+
|  9/1/2013|    10800.0|
|25/04/2013|    12440.0|
|27/03/2014|    16930.0|
|26/03/2015|    18560.0|
|14/05/2013|    13770.0|
|30/06/2013|    13880.0

我的目标是得到这样的东西:

  visitdate|totalamount|
+----------+-----------+
|1/1/2013|    10800.0|
|1/2/2013|    12440.0|
|1/3/2013|    16930.0|
|1/4/2014|    18560.0|
|1/5/2015|    13770.0|
|1/6/2015|    13880.0|

Tags: 数据方法目标金额amountnoterow汇总
2条回答

您可以先formatvisitdate,然后按以下方式分组:

from pyspark.sql import functions as F

(df.withColumn('visitdate_month', F.date_format(F.col('visitdate'), '1/M/yyyy'))
.groupBy('visitdate_month')
.agg(F.sum(F.col('visitdate_month')))
)

看起来“visitdate”列的类型是String,可以用“unix”转换为时间戳,然后用“date\u format”转换为所需格式的字符串。在此之后,可以在Scala上执行分组:

val visitMonthDf = df.withColumn("visitMonth", date_format(unix_timestamp($"visitdate", "dd/MM/yyyy").cast(TimestampType), "1/M/yyyy"))
visitMonthDf.groupBy("visitMonth").agg(sum($"totalamount"))

相关问题 更多 >

    热门问题