如何扩展Pandas DataFrame,使两表date_time列起止日期一致
解决方案
要让两个DataFrame的date_time覆盖从min_date到max_date的完整时间范围,同时保留原始数据、缺失点补NaN,可以用Pandas的date_range生成完整时间序列,再通过reindex对齐索引,具体步骤如下:
确保日期列是datetime类型
如果你的date_time还不是datetime格式,先转换:data['date_time'] = pd.to_datetime(data['date_time']) temp_data['date_time'] = pd.to_datetime(temp_data['date_time'])生成完整的时间序列
根据原数据的时间间隔(比如小时、天)生成从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)重新索引对齐两个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
相关产品推荐
相关产品推荐

