如何在Python中将透视矩阵格式的DataFrame转换为时间序列?
解决方案:将宽格式时间数据转换为时间序列结构
你可以通过**逆透视(melt)**操作实现需求,以下是具体步骤和代码示例:
步骤说明
- 使用
melt将原DataFrame的时间列(如13:00、14:00)转换为行数据,保留Date列作为标识列; - 将
Date列与转换后的时间列合并,转换为完整的datetime类型; - 整理列名和结构,得到目标格式。
代码示例
1. 构造样例数据
import pandas as pd # 模拟你的原始DataFrame df = pd.DataFrame({ 'Date': ['2022-01-01', '2022-01-02'], '13:00': [10, 20], '14:00': [15, 25], '15:00': [20, 30] })
2. 逆透视转换
# 将时间列转为行,生成Time和Data列 melted_df = df.melt(id_vars='Date', var_name='Time', value_name='Data')
3. 合并日期与时间为datetime类型
# 拼接日期和时间字符串,转换为datetime melted_df['Date'] = pd.to_datetime(melted_df['Date'] + ' ' + melted_df['Time']) # 移除多余的Time列,得到最终结果 final_df = melted_df.drop(columns='Time')
最终结果示例
Date Data 0 2022-01-01 13:00:00 10 1 2022-01-02 13:00:00 20 2 2022-01-01 14:00:00 15 3 2022-01-02 14:00:00 25 4 2022-01-01 15:00:00 20 5 2022-01-02 15:00:00 30
注:你提到的pivot是透视操作(行转列),而此处需要的是逆透视(列转行),因此melt是更合适的工具。
内容的提问来源于stack exchange,提问作者Rulo
相关产品推荐
相关产品推荐

