You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算4小时时间跨度内平均完成的骑行订单数?Pandas代码调试求助

解决4小时时间跨度内平均骑行订单数的计算问题

先帮你梳理下当前遇到的核心问题,再给出清晰的实现步骤:

问题1:方案1的报错根源

你碰到的Dataframe object has no attribute dropoff_date_time错误,是因为你的数据集列名是ride_completion_time,但代码里误用了不存在的dropoff_date_time(从你给出的dtypes来看,可能你实际列名是dropoff_datetime?这里一定要保证列名完全一致)。另外,mean()方法对ride_id(object类型)没有意义——你需要的是统计订单数量而非求均值。

问题2:方案2的求和/均值失效原因

方案2里用sum()对ride_id(字符串类型)求和完全无效,因为字符串无法直接做求和运算;而且pandas里没有average方法,正确的均值方法是mean(),但前提是你得先拿到分组后的有效订单计数。


正确的实现步骤

假设你的时间列实际名为ride_completion_time(如果是dropoff_datetime,替换成对应列名即可),按以下步骤操作:

1. 按4小时时间窗口分组,统计每个窗口的订单数量

用dt.floor('4H')把时间向下取整到最近的4小时整点,然后对ride_id进行计数(每个ride_id对应一个独立订单):

# 按4小时时间窗口分组,统计每组的订单数量
hourly_order_counts = df3.groupby(df3['ride_completion_time'].dt.floor('4H'))['ride_id'].count()

执行后会得到一个Series:索引是4小时间隔的时间戳,值是对应时间段内的订单数。

2. 计算分组订单数的平均值

拿到每个4小时窗口的订单数后,直接用mean()计算平均值,这就是你要的“4小时时间跨度内平均完成的骑行订单数量”:

avg_4h_rides = hourly_order_counts.mean()
print(f"4小时跨度内平均完成的骑行订单数:{avg_4h_rides}")

补充:查看每个4小时窗口的具体订单数

直接打印hourly_order_counts就能看到各时间段的订单分布,比如你的示例数据会输出:

ride_completion_time
2022-08-23 16:00:00    1
2022-08-24 04:00:00    1
2022-08-27 00:00:00    2
2022-08-28 20:00:00    1
Name: ride_id, dtype: int64

对应的平均值就是(1+1+2+1)/4 = 1.25。


最后提醒:你的数据集列名(ride_completion_time)和dtypes输出的列名(dropoff_datetime)不一致,一定要先确认实际列名,避免因名称不匹配导致的报错。

内容的提问来源于stack exchange,提问作者Maggie Liu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 14:07:29