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

如何在Pandas中为各日期的ID号生成重复小时值列

Pandas实现为每个ID匹配重复小时值的方法

问题描述

现有如下结构的DataFrame:

DateID number
15/06/20221523
15/06/20221402

需要添加一个Hour列,让每个ID号对应指定的重复小时值(示例:1、2、4、5、6、7、8),最终得到每个ID与所有指定小时一一对应的DataFrame,如何用Pandas实现?

解决方法

方法1:使用merge的交叉合并(Pandas 1.2.0+)

直接利用how='cross'参数实现两个DataFrame的笛卡尔积,让原数据的每一行与小时列表的每一行组合:

import pandas as pd

# 构建原始DataFrame
df = pd.DataFrame({
    'Date': ['15/06/2022', '15/06/2022'],
    'ID number': [1523, 1402]
})

# 定义需要匹配的小时列表
hours_df = pd.DataFrame({'Hour': [1, 2, 4, 5, 6, 7, 8]})

# 交叉合并得到结果
result_df = df.merge(hours_df, how='cross')

方法2:兼容低版本Pandas的临时键合并

如果你的Pandas版本低于1.2.0,可通过添加临时键实现交叉合并:

import pandas as pd

df = pd.DataFrame({
    'Date': ['15/06/2022', '15/06/2022'],
    'ID number': [1523, 1402]
})

hours_df = pd.DataFrame({'Hour': [1, 2, 4, 5, 6, 7, 8]})

# 添加临时键用于合并
df['temp_key'] = 1
hours_df['temp_key'] = 1

# 合并后删除临时键
result_df = df.merge(hours_df, on='temp_key').drop('temp_key', axis=1)

最终效果

处理后得到的DataFrame结构示例:

DateID numberHour
15/06/202215231
15/06/202215232
15/06/202215234
.........
15/06/202214028

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 21:36:34