Pandas技术问题:如何处理子列并将其与行合并?
解决DataFrame时间序列格式转换方案
操作步骤(基于Pandas)
假设你的初始DataFrame结构为:包含Date(日期列)、Category(类别列)、Value(数值列),目标是转为日期为索引、类别为列的时间序列宽表,同时补全缺失日期。
转换日期类型并转宽表
先确保日期列是datetime格式,再用pivot把长表转宽表:import pandas as pd # 转换日期列类型 df['Date'] = pd.to_datetime(df['Date']) # 转宽表,缺失值补0(可根据需求换成pd.NA保留空值) wide_df = df.pivot(index='Date', columns='Category', values='Value').fillna(0)补全连续时间序列
生成完整的日期范围,重新索引补全缺失日期:# 生成从最早到最晚日期的连续日序列(freq='D'按天,按需换'M'月/'H'小时等) full_dates = pd.date_range(start=wide_df.index.min(), end=wide_df.index.max(), freq='D') # 重新索引补全日期,缺失值补0 final_df = wide_df.reindex(full_dates).fillna(0)
补充说明
- 如果初始数据的日期频率不是天,修改
freq参数即可(比如月度数据用freq='MS'表示每月初) - 若不需要补全日期,仅转换为宽表格式,执行第一步操作即可
内容的提问来源于stack exchange,提问作者countmoya
相关产品推荐
相关产品推荐

