首页 > 解决方案 > 如何在pyspark数据框中按时间范围过滤行

问题描述

我正在尝试按时间过滤数据框。我的时间列是从时间戳列“pickup_datetime”中提取的,格式为 (yyyy-dd-mm HH:mm:ss),如下所示 -

`df = df.withColumn('Pickup_time', date_format('Pickup_datetime', 'HH:mm:ss'))`

现在我正在尝试通过使用以下查询查找每天晚上开车的所有司机

df.withColumn("COUNT", f.lit(1))\
    .groupBy("Pickup_date","Driver_ID")\
    .where((df.Pickup_time >= 01:00:00) & (df.Pickup_time <= 06:00:00)) \
    .agg(f.sum("COUNT").alias("Total_Rides"))\
    .orderBy("Pickup_date", ascending=False)

我是否以正确的格式正确提取时间?如果是,那么为什么我的查询不起作用?

表的前半部分 表的后半部分

标签: sqlpysparkapache-spark-sql

解决方案


尝试

df.filter(df["Pickup_time"] >= lit('01:00:00')) \
       .filter(df["Pickup_time"] <= lit('06:00:00'))

推荐阅读