【问题标题】: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|
    +----+----------+-------+
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-16
      相关资源
      最近更新 更多