pyspark按季度在范围内添加列if date

kt06eoxx  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(373)

我有一个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

我已将我的季度定义为字符串列表,因此我认为可以在季度范围中使用.withcolumn+when col('date'),但出现错误,表示无法将列转换为布尔值。

yduiuuwa

yduiuuwa1#

你可以用 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|
+----+----------+-------+

相关问题