如何使用Pandas重构含小时时间列与日期列的DataFrame
解决方案
步骤说明
你的需求是将宽格式的DataFrame(小时列+多日期列)转换为长格式的日期时间+数值结构,可通过Pandas的melt函数结合日期时间拼接实现,具体步骤如下:
代码实现
import pandas as pd # 读取数据(替换为你的本地文件路径或对应读取方式) df = pd.read_excel("数据文件.xlsx") # 若为CSV格式则改用pd.read_csv # 1. 重塑数据:将多日期列转为行数据 melted_df = df.melt( id_vars="小时", # 保留小时列作为标识 var_name="日期", # 原日期列的列名转为"日期"列的取值 value_name="数值" # 原单元格的值存入"数值"列 ) # 2. 合并日期与小时为完整日期时间 # 若日期/小时格式特殊,可添加format参数指定解析规则,例如format="%Y/%m/%d %H:%M" melted_df["日期时间"] = pd.to_datetime(melted_df["日期"] + " " + melted_df["小时"]) # 3. 整理最终结果:调整列顺序、按时间排序并重置索引 result_df = melted_df[["日期时间", "数值"]].sort_values("日期时间").reset_index(drop=True)
效果说明
执行上述代码后,result_df的结构将与目标输出一致:每行对应一个完整的日期时间戳,以及该时间点对应的数值,且数据按时间顺序排列。
内容的提问来源于stack exchange,提问作者Tayzer Damasceno
相关产品推荐
相关产品推荐

