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

如何扩展Pandas DataFrame,使两表date_time列起止日期一致

解决方案

要让两个DataFrame的date_time覆盖从min_date到max_date的完整时间范围,同时保留原始数据、缺失点补NaN,可以用Pandas的date_range生成完整时间序列,再通过reindex对齐索引,具体步骤如下:

  1. 确保日期列是datetime类型
    如果你的date_time还不是datetime格式,先转换:

    data['date_time'] = pd.to_datetime(data['date_time'])
    temp_data['date_time'] = pd.to_datetime(temp_data['date_time'])
    
  2. 生成完整的时间序列
    根据原数据的时间间隔(比如小时、天)生成从min_date到max_date的完整序列。可以让Pandas自动推断频率,也可以手动指定:

    # 自动推断时间频率(比如'H'代表小时,'D'代表天)
    inferred_freq = data['date_time'].inferred_freq or temp_data['date_time'].inferred_freq
    # 生成完整时间范围,若自动推断不准,可手动设置freq参数,比如freq='D'
    full_date_range = pd.date_range(start=min_date, end=max_date, freq=inferred_freq)
    
  3. 重新索引对齐两个DataFrame
    将原表的date_time设为索引,用完整时间序列重新索引,缺失的时间点会自动填充NaN,最后重置索引恢复date_time为列:

    # 处理Voltage表
    data_full = data.set_index('date_time') \
                    .reindex(full_date_range) \
                    .reset_index() \
                    .rename(columns={'index': 'date_time'})
    
    # 处理Temperature表
    temp_data_full = temp_data.set_index('date_time') \
                              .reindex(full_date_range) \
                              .reset_index() \
                              .rename(columns={'index': 'date_time'})
    

这样处理后,data_full和temp_data_full的date_time列就完全覆盖了min_date到max_date的所有时间点,原始数据完整保留,新增的时间点对应的数值列都是NaN。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 05:05:02