You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

从CSV数据中查找并补全缺失的小时级时间间隔

我来帮你搞定这个补全小时粒度时间间隔的需求!针对你给出的CSV数据,用Python的pandas库就能高效解决,步骤很直观:

解决方案:补全CSV中缺失的小时粒度时间记录

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

首先读取CSV文件,把日期列转换成可处理的datetime格式,同时设置多级索引方便按id+city分组操作:

import pandas as pd

# 替换成你的CSV文件路径
df = pd.read_csv('your_input.csv')
# 解析日期列(匹配示例中的MM/DD/YYYY HH:MM:SS格式)
df['date'] = pd.to_datetime(df['date'], format='%m/%d/%Y %H:%M:%S')
# 设置id、city、date为多级索引
df = df.set_index(['id', 'city', 'date'])

步骤2:按组生成完整的小时时间序列

对每个(id, city)组合,生成该组时间范围内的所有小时节点,再和原数据合并,自动识别缺失项:

# 分组后为每个组生成连续的小时序列
full_time_df = df.groupby(['id', 'city']).apply(
    lambda group: group.reindex(
        pd.date_range(
            group.index.get_level_values('date').min(),
            group.index.get_level_values('date').max(),
            freq='H'  # 1小时间隔
        )
    )
).reset_index()

步骤3:填充缺失的id和city字段

生成完整时间序列后,idcity会出现空值,我们用组内的固定值填充:

# 按组向前填充id和city(每个组的id、city是唯一的)
full_time_df[['id', 'city']] = full_time_df.groupby(['id', 'city'])[['id', 'city']].ffill()
# 按需填充reading字段的空值,比如留空字符串或设为0
full_time_df['reading'] = full_time_df['reading'].fillna('')  # 替换成0或其他默认值均可

步骤4:导出处理后的CSV

最后把补全好的数据保存到新文件:

full_time_df.to_csv('your_output.csv', index=False)

效果验证

针对你提供的示例数据,处理后会:

  • id=33, city=US-Ohio补上06/19/2011 03:00:0004:00:0005:00:00三条记录
  • id=34, city=US-NYC补上06/19/2011 07:00:00这条记录
    所有补全的记录都会保留对应组的idcity值,reading字段按你设置的规则填充。

注意事项

  • 如果你的CSV日期格式和示例不同,需要调整pd.to_datetime中的format参数
  • 可以根据实际需求修改reading字段的填充值,比如用同组的均值填充(如果是数值型数据)

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

火山引擎 最新活动