如何将宽格式数据重塑为时间序列/长格式并合并Date列?
宽格式数据转时间序列长格式实现方案
Python Pandas 实现
假设你的数据框名为df,左侧为固定标识列(如编号、地区名),右侧是格式为1997年8月至2001年8月的日期列。
- 核心使用
melt函数完成重塑:
import pandas as pd # 替换'id_vars'里的内容为你实际的固定列名(多列用列表,如['ID', 'Region']) df_long = df.melt( id_vars=['ID'], var_name='Date', value_name='Value' ) # 将日期列转为标准日期格式(适配中文年月格式) df_long['Date'] = pd.to_datetime(df_long['Date'], format='%Y年%m月') # 若有缺失值,按需填充(示例填充为0) df_long['Value'] = df_long['Value'].fillna(0)
原始宽表各日期列长度一致时,重塑后的长表会自动保持每行数据对齐,总长度为「固定列行数 × 日期列数量」。
R Tidyr 实现
假设数据框名为df,操作逻辑与Python一致:
- 核心使用
pivot_longer函数完成重塑:
library(tidyr) library(lubridate) # 替换'-ID'为你的固定列名(多列用c(-ID, -Region)) df_long <- df %>% pivot_longer( cols = -ID, names_to = 'Date', values_to = 'Value' ) # 转换为标准日期格式(适配中文年月格式) df_long$Date <- ymd(df_long$Date, format = '%Y年%m月') # 按需填充缺失值 df_long$Value <- replace_na(df_long$Value, 0)
内容的提问来源于stack exchange,提问作者SaltySenator
相关产品推荐
相关产品推荐

