【问题标题】:PySpark add column if date in range by quarter如果日期在季度范围内,PySpark 添加列
【发布时间】: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 + 但收到错误消息,提示我无法将列转换为布尔值。
【问题讨论】:
标签:
python-3.x
apache-spark
apache-spark-sql
【解决方案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|
+----+----------+-------+