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

如何用Pandas为DataFrame生成每日重复的24小时时间间隔列?

Pandas生成每日24小时时间间隔并关联多ID的实现方案

需求说明

输入DataFrame包含ID分类字段和日期列,需要生成每个ID对应每一天的24条记录,每条记录新增格式为00:00 - 01:00的“时间间隔”列,最终得到ID、Date、时间间隔的全组合结果。

实现步骤与代码

核心思路是通过笛卡尔积实现ID、日期、时间间隔的全关联,直接生成目标格式的时间间隔字符串,替代复杂的interval操作:

import pandas as pd

# 假设原输入数据为 df_input
# 提取日期范围
start_date = df_input['Date'].min()
end_date = df_input['Date'].max()

# 生成固定格式的24小时时间间隔列表
time_intervals = [f"{hour:02d}:00 - {(hour+1):02d}:00" for hour in range(24)]

# 生成日期数据集
date_df = pd.DataFrame({'Date': pd.date_range(start=start_date, end=end_date, freq='1D')})

# 生成日期与时间间隔的全组合(笛卡尔积)
date_time_comb = date_df.assign(join_key=1) \
                        .merge(pd.DataFrame({'时间间隔': time_intervals, 'join_key': 1}), on='join_key') \
                        .drop('join_key', axis=1)

# 生成ID与日期-时间间隔的全组合,得到最终结果
unique_ids = df_input[['ID']].drop_duplicates()
final_result = unique_ids.assign(join_key=1) \
                         .merge(date_time_comb, on='join_key') \
                         .drop('join_key', axis=1)

为什么不用pd.interval_range?

pd.interval_range生成的是Pandas时间间隔对象,若要转换为目标字符串格式仍需额外处理;直接通过字符串格式化生成所需的时间间隔文本,再结合笛卡尔积关联,步骤更简洁直接,完全匹配需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 23:37:19