python - pyspark 中的每月聚合

标签 python apache-spark pyspark apache-spark-sql

我正在寻找一种按月汇总数据的方法。我首先想在我的访问日期中只保留一个月。我的数据框看起来像这样:

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

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

from pyspark.sql import SparkSession

spark = SparkSession \
.builder \
.appName("Python Spark SQL basic example") \
.config("spark.some.config.option", "some-value") \
.getOrCreate()

file_path = "G:/Visit Data.csv"
patients = spark.read.csv(file_path,header = True)
patients.createOrReplaceTempView("visitdate")

sqlDF = spark.sql("SELECT visitdate,SUM(amount) as totalamount from visitdate GROUP BY visitdate")
sqlDF.show()

这是结果:

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|

最佳答案

你可以 format visitdate 首先进行分组:

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')))
)

关于python - pyspark 中的每月聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52565482/

相关文章:

python - 自定义数据生成器

java - SparkStreaming - ExitCodeException exitCode=13

apache-spark - 如何在 spark mllib 中进行基于项目的推荐?

apache-spark - 使用Spark从Elasticsearch获取最新的N条记录

pyspark - 如果任一集群永远未修复,Cassandra 或 ScyllaDB 是否可以在使用 PySpark 读取时提供不完整的数据?

android - Kivy ScrollView+ Accordion 错误

python - 为什么我的github上的python包没有显示使用的信息?

php - 如何从网页中提取有意义有用的内容?

java - Spark : launch from single JVM jobs with different memory/cores configs simultaneously

python - 使用 spark ml(数据框)进行逻辑回归