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

如何用Python将周度ni数据拆分至每日并生成独立日期索引

解决每周数据填充至每日的方案

注意你给出的示例中07-01-1995应为笔误(原始数据起始日期是07-31-1995),实际处理后会生成从每周一到当周周日的所有日期,并填充对应周的数值。以下是可行的代码方案:

步骤1:读取并预处理原始数据

首先读取bill.txt文件,解析日期和数值,确保日期格式正确转换为datetime类型(关键:指定格式为%m-%d-%Y,避免解析错误)。

import pandas as pd

# 读取文件,指定分隔符为冒号,自定义列名
df = pd.read_csv('bill.txt', sep=':', header=None, names=['date', 'value'])
# 转换日期为datetime类型,明确格式是月-日-年
df['date'] = pd.to_datetime(df['date'], format='%m-%d-%Y')
# 将日期设为DataFrame索引,方便后续时间序列操作
df = df.set_index('date')

步骤2:生成连续日期并填充数据

生成从第一个记录日期到最后一个记录日期后6天的每日连续日期(确保覆盖最后一周的所有天数),然后用**前向填充(ffill)**将每周一的数值填充至该周剩余天数。

# 生成连续每日日期范围
date_range = pd.date_range(start=df.index.min(), end=df.index.max() + pd.Timedelta(days=6), freq='D')
# 重新索引并前向填充数据
df_daily = df.reindex(date_range).ffill()

步骤3:导出为目标格式文件

将处理后的日期转回MM-DD-YYYY格式,以冒号分隔保存为新文件(比如daily_bill.txt)。

# 重置索引,恢复日期列为普通列
df_daily = df_daily.reset_index().rename(columns={'index': 'date'})
# 格式化日期为指定字符串格式
df_daily['date'] = df_daily['date'].dt.strftime('%m-%d-%Y')
# 导出文件,不保留索引和表头
df_daily.to_csv('daily_bill.txt', sep=':', index=False, header=False)

常见报错原因及解决

  • 日期解析错误:未指定format='%m-%d-%Y',pandas可能误将日期识别为日-月-年导致错误,必须明确格式。
  • resample使用不当:若用resample('W').ffill(),默认周起始是周日,会导致数据周划分错误,需改为resample('W-MON').ffill()(但本方案用reindex+ffill更直接)。
  • 索引类型错误:未将日期设为datetime索引就使用时间序列方法(如resample),会触发类型错误,必须先转换索引类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 07:55:27