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

如何在Python中扩展数据集日期?现有代码失效求助

解决日期连续展开的问题

问题分析

你的原代码没法实现需求,核心原因是resample('1D')需要分组内的日期索引本身具备连续时间区间的基础,但你的数据是离散的日期点,没法直接通过resample生成中间缺失的日期。正确思路是给每个Line+Style No组合,生成从该组最早日期到最晚日期的连续每日序列。

完整代码实现

import pandas as pd

# 构造原始数据集
data = {
    'Line': ['G01', 'G01', 'G01', 'G01'],
    'Style No': ['DDS23-00648-1101(BR)', 'RG322F2633', 'RG322F2633', 'RG322F2633'],
    'Loading date': ['05/08/2024', '09/08/2024', '17/08/2024', '24/08/2024']
}
df1 = pd.DataFrame(data)

# 步骤1:将日期列转为datetime类型(指定日/月/年格式,避免识别错误)
df1['Loading date'] = pd.to_datetime(df1['Loading date'], format='%d/%m/%Y')

# 步骤2:分组生成连续日期
def expand_dates(group):
    # 生成组内从最早到最晚的每日日期序列
    date_range = pd.date_range(start=group['Loading date'].min(), end=group['Loading date'].max(), freq='D')
    # 复用当前组的Line和Style No,匹配每个日期
    return pd.DataFrame({
        'Line': group['Line'].iloc[0],
        'Style No': group['Style No'].iloc[0],
        'Loading_date': date_range
    })

# 应用分组逻辑并合并结果
result = df1.groupby(['Line', 'Style No'], group_keys=False).apply(expand_dates).reset_index(drop=True)

# 步骤3:将日期转回原字符串格式(日/月/年)
result['Loading_date'] = result['Loading_date'].dt.strftime('%d/%m/%Y')

print(result)

代码说明

  • 转日期类型:必须先把字符串日期转为datetime格式,这是生成连续序列的前提,指定format='%d/%m/%Y'是适配你的日/月/年日期格式,防止pandas识别出错。
  • 分组生成序列:自定义函数expand_dates针对每个分组生成连续日期,同时复用该组的Line和Style No值,确保日期与对应字段匹配。
  • 合并与格式化:通过groupby.apply合并所有分组的结果,最后重置索引、转回原日期字符串格式,即可得到你需要的输出。

内容的提问来源于stack exchange,提问作者Đức Hoàng Nguyễn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 23:18:09