簡體   English   中英

PySpark按月對數據框進行分組

[英]PySpark Group the Dataframe by Month

我有一列日期和一列計數。 例如:

Date       Count: 
3/07/2010  1
2/01/2010  2
1/07/2012  5

我使用下面的代碼更改了數據類型:

func =  udf (lambda x: datetime.strptime(x, '%d/%m/%Y'), DateType())
crime_mongodb_df = crime_mongodb_df.withColumn('Reported Date', func(col('Reported Date')))

然后,我想按年份對數據進行分組並找到每年的總數。 我不確定如何進行分組。 我可以幫忙嗎? 謝謝!

我們可以使用pyspark.sql.functions函數來完成所有這些工作,包括非常容易地進行類型更改:)

from pyspark.sql.functions import to_date, col, year

df = spark.createDataFrame([('3/07/2012', 1), ('2/07/2010', 2), ('1/07/2010', 5)], ["Date", "Count"])

df.show()
df.printSchema()
+---------+-----+
|     Date|Count|
+---------+-----+
|3/07/2012|    1|
|2/07/2010|    2|
|1/07/2010|    5|
+---------+-----+

root
 |-- Date: string (nullable = true)
 |-- Count: long (nullable = true)

adjustedDf = df.withColumn("Date", to_date(col("Date"), "d/MM/yyyy"))\
    .withColumn('year', year("Date"))

adjustedDf.show()
+----------+-----+----+
|      Date|Count|year|
+----------+-----+----+
|2012-07-03|    1|2012|
|2010-07-02|    2|2010|
|2010-07-01|    5|2010|
+----------+-----+----+
adjustedDf.groupBy("year").sum("Count").show()

+----+----------+
|year|sum(Count)|
+----+----------+
|2010|         7|
|2012|         1|
+----+----------+

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM