sql - 如何在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)
我是否以正确的格式正确提取时间?如果是,那么为什么我的查询不起作用?
解决方案
尝试
df.filter(df["Pickup_time"] >= lit('01:00:00')) \
.filter(df["Pickup_time"] <= lit('06:00:00'))
推荐阅读
- python-3.x - Python ThreadPoolExecutor 异步
- python - 使用python获取和修改docx文档中的形状?
- android - 在 Spek 测试中使用 Koin 测试
- javascript - 无法使用 $lookup 从 mongodb nodejs 中的外部表中获取数据
- plotly - 用线消失问题绘制图表
- c# - Unity 2d Character 使用 UI 按钮移动和跳转到特定位置
- php - 测试数据库 laravel 7.x 的问题
- ab-initio - 有没有办法在 Abinitio 的特定列中处理逗号分隔的数据
- reactjs - 是否可以将 rel=alternate 和 hreflang 与 React.js 一起使用?
- wordpress - 如何更改登录组件,以便它使用注册表单中的新字段而不是用户名或电子邮件(即帐号)?