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

编写Python脚本补全CSV中缺失的15分钟间隔流量数据行

Python脚本补全CSV中缺失的15分钟时间步记录

针对你的需求,我们可以用pandas库高效处理8万行的CSV数据,自动识别并补全缺失的15分钟时间步记录,具体方案如下:

核心思路

  1. 将分散的Date和Time列合并为完整时间戳,作为数据索引
  2. 生成从数据起始到结束时间的完整15分钟间隔时间序列
  3. 基于完整时间序列重新索引原始数据,自动插入缺失行
  4. 填充缺失行的ID和Flow字段(Flow设为NA),最后拆分回原列格式并保存

完整代码实现

import pandas as pd

# 1. 读取原始CSV文件(根据实际分隔符调整sep参数,示例适配制表符/空格混合的格式)
df = pd.read_csv('your_input.csv', sep='\s+', header=None, names=['ID', 'Date', 'Time', 'Flow'])

# 2. 合并日期和时间为标准时间戳,指定日期格式为MM/DD/YYYY
df['Datetime'] = pd.to_datetime(df['Date'] + ' ' + df['Time'], format='%m/%d/%Y %H:%M')
df.set_index('Datetime', inplace=True)

# 3. 生成完整的15分钟间隔时间序列
full_time_index = pd.date_range(start=df.index.min(), end=df.index.max(), freq='15T')

# 4. 重新索引补全缺失行,填充ID和Flow字段
df_filled = df.reindex(full_time_index)
# 填充ID(假设所有记录ID均为USGS,若有多个ID需按ID分组后单独处理)
df_filled['ID'] = df_filled['ID'].fillna('USGS')
# 将Flow缺失值设为NA
df_filled['Flow'] = df_filled['Flow'].fillna('NA')

# 5. 拆分时间戳回Date和Time列,恢复原列顺序
df_filled['Date'] = df_filled.index.strftime('%m/%d/%Y')
df_filled['Time'] = df_filled.index.strftime('%H:%M')
df_filled = df_filled[['ID', 'Date', 'Time', 'Flow']]

# 6. 保存补全后的CSV文件
df_filled.to_csv('your_output.csv', sep='\t', index=False)

关键细节说明

  • 分隔符适配:如果原始CSV是逗号分隔,将sep='\s+'改为sep=','即可
  • 多ID场景:若数据包含多个ID,需先按ID分组,再对每组执行上述补全逻辑
  • 日期格式调整:如果原始日期格式为DD/MM/YYYY,修改pd.to_datetime中的format参数为'%d/%m/%Y %H:%M'
  • 性能保障:pandas处理8万行数据效率极高,无需担心运行速度问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 15:19:31