【问题标题】:Selecting data between a time range in pyspark dataframe在 pyspark 数据框中的时间范围之间选择数据
【发布时间】:2021-06-28 14:59:56
【问题描述】:

我正在尝试使用 pyspark 在一个时间范围内为多个 ID 选择数据。

我在 spark 数据框“event_df”中有四列

ID Time Event_Start_Date Event_End_Date
241856 2020-10-18T09:16:49.000+0000 2020-11-12T20:15:00.000+0000 2020-11-12T20:45:00.000+0000

在“时间”中,有 2 个月的个人 ID 数据。不同的 ID 有不同的事件开始和结束日期但是,我只想选择 “事件开始日期”和“事件结束日期”之间的数据。

我尝试了以下方法,但似乎没有返回我想要的内容

 refined_df = event_df.where(( col ('Time') >= col ('Event_Start_Date')) & ( col ('Time') <= col ('Event_End_Date ')) )

【问题讨论】:

    标签: python sql pyspark date-range


    【解决方案1】:

    不确定为什么您的线路不适合您,但您也可以尝试使用 between:

    import pyspark.sql.functions as F
    
    data = [(241856, '2020-10-18T09:16:49.000+0000', '2019-11-12T20:15:00.000+0000', '2020-11-12T20:45:00.000+0000'),
           (241857, '2020-10-18T09:16:49.000+0000', '2020-11-12T20:15:00.000+0000', '2020-11-12T20:45:00.000+0000')]
    
    df = spark.sparkContext.parallelize(data).toDF(['ID','Time','Event_Start_Date','Event_End_Date'])
    
    df.show()
    df.filter(F.col('Time').between(F.col('Event_Start_Date'), F.col('Event_End_Date'))).show()
    

    返回

    +------+--------------------+--------------------+--------------------+
    |    ID|                Time|    Event_Start_Date|      Event_End_Date|
    +------+--------------------+--------------------+--------------------+
    |241856|2020-10-18T09:16:...|2019-11-12T20:15:...|2020-11-12T20:45:...|
    |241857|2020-10-18T09:16:...|2020-11-12T20:15:...|2020-11-12T20:45:...|
    +------+--------------------+--------------------+--------------------+
    
    +------+--------------------+--------------------+--------------------+
    |    ID|                Time|    Event_Start_Date|      Event_End_Date|
    +------+--------------------+--------------------+--------------------+
    |241856|2020-10-18T09:16:...|2019-11-12T20:15:...|2020-11-12T20:45:...|
    +------+--------------------+--------------------+--------------------+
    

    【讨论】:

      猜你喜欢
      • 2013-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-11
      • 1970-01-01
      • 2023-01-09
      • 1970-01-01
      相关资源
      最近更新 更多