如何在Pandas中将datetime列按照四个指定时段分组
解决方案
你遇到的报错原因是Time_Interval列当前为字符串类型,只有datetime/ timedelta类型的序列才支持.dt访问器调用时间相关方法。完整实现流程如下:
1. 转换时间列并提取小时值
import pandas as pd # 将字符串格式的时间转为datetime类型,提取小时值用于后续分箱 df['hour'] = pd.to_datetime(df['Time_Interval'], format='%H:%M:%S').dt.hour
2. 按小时分箱生成自定义分组
# 定义分箱边界和分组名称 bins = [0, 6, 12, 18, 24] group_labels = ['12AM-06 AM', '06 AM-12PM', '12PM-18PM', '18PM-12AM'] # right=False设置区间为左闭右开,匹配边界时间的分组逻辑 df['time_group'] = pd.cut( df['hour'], bins=bins, labels=group_labels, right=False, include_lowest=True ) # 不需要保留临时hour列可执行下行删除 # df.drop('hour', axis=1, inplace=True)
上述代码的分箱逻辑为左闭右开,完全匹配你需要的分组规则:
- 00:00:00~05:59:59 归入12AM-06 AM
- 06:00:00~11:59:59 归入06 AM-12PM
- 12:00:00~17:59:59 归入12PM-18PM
- 18:00:00~23:59:59 归入18PM-12AM
内容的提问来源于stack exchange,提问作者merts97
相关产品推荐
相关产品推荐

