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

Pandas如何对仅含时间不含日期的列按自定义区间分箱

操作步骤

假设你已经将timestamp_time列转换为pandas支持的datetime格式,按以下步骤操作即可:

  1. 提取24小时制的小时数值
# 从datetime列中提取小时(取值范围0~23的整数)
df['hour'] = df['timestamp_time'].dt.hour

如果你转换后得到的是字符串格式的24小时制时间(比如13:05),先执行转换再提取小时:

df['timestamp_time'] = pd.to_datetime(df['timestamp_time'], format='%H:%M')
df['hour'] = df['timestamp_time'].dt.hour
  1. 使用pd.cut完成分箱
    按照你给出的闭区间要求设置分箱边界和对应标签即可:
# 分箱边界,配合左闭规则匹配需求
bins = [0, 5, 12, 17, 21, 24]
# 对应时间段标签,顺序和区间一一匹配
labels = ['midnight', 'morning', 'afternoon', 'evening', 'night']
# 生成结果列,right=False表示区间为左闭右开,刚好匹配你的闭区间要求
df['time_of_the_day'] = pd.cut(df['hour'], bins=bins, labels=labels, right=False)

区间匹配逻辑验证

  • [0,5) → 小时0~4 → 对应12AM~4:59AM → midnight
  • [5,12) → 小时5~11 → 对应5AM~11:59AM → morning
  • [12,17) → 小时12~16 → 对应12PM~4:59PM → afternoon
  • [17,21) → 小时17~20 → 对应5PM~8:59PM → evening
  • [21,24) → 小时21~23 → 对应9PM~11:59PM → night

不需要保留hour列的话,执行df.drop('hour', axis=1, inplace=True)删除即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 15:54:10