如果日期在季度范围内,PySpark 添加列

Posted

技术标签:

【中文标题】如果日期在季度范围内,PySpark 添加列【英文标题】:PySpark add column if date in range by quarter 【发布时间】:2020-07-21 17:21:48 【问题描述】:

我有一个df如下:

name  date  

x     2020-07-20
y     2020-02-13
z     2020-01-21

我需要一个新列,对应的季度为整数,例如

name   date         quarter

x      2020-07-20   3
y      2020-02-13   1 
z      2020-01-21   1

我已将我的季度定义为字符串列表,因此我认为我可以在 col('date') 在季度范围内使用 .withColumn + 但收到错误消息,提示我无法将列转换为布尔值。

【问题讨论】:

【参考方案1】:

您可以使用quarter 函数将其提取为整数。

from pyspark.sql.functions import *

df1=spark.createDataFrame([("x","2020-07-20"),("y","2020-02-13"),("z","2020-01-21")], ["name", "date"])
df1.show()
+----+----------+
|name|      date|
+----+----------+
|   x|2020-07-20|
|   y|2020-02-13|
|   z|2020-01-21|
+----+----------+

df1.withColumn("quarter", quarter(col("date"))).show()

+----+----------+-------+
|name|      date|quarter|
+----+----------+-------+
|   x|2020-07-20|      3|
|   y|2020-02-13|      1|
|   z|2020-01-21|      1|
+----+----------+-------+

【讨论】:

以上是关于如果日期在季度范围内,PySpark 添加列的主要内容,如果未能解决你的问题,请参考以下文章

pyspark - 无法从日期列中获取一年中的季度和一周

Python 帮助 - 添加基于日期范围创建列

为日期列添加mysql范围分区

向 pyspark 中的数据框添加列

如何在 Spark 数据框中添加具有当前日期的额外列

Pyspark - 每个键添加缺失值?