如何将Pandas DataFrame中的独立年份列转换为时间序列数据?
Pandas DataFrame 宽表转时间序列长表
原始数据结构
2017 2018 2019 Bill 10 15 20 Jim 5 10 20
目标格式
Name Year Amount Bill 2017 10 Bill 2018 15 Jim 2017 5 ...
实现方法
使用Pandas的melt()方法可快速完成宽表到长表的转换,具体步骤如下:
- 构造原始DataFrame(已有数据可跳过此步)
- 将行索引(姓名)转为普通列
- 调用
melt()指定转换规则,并重命名列名匹配目标格式
完整代码:
import pandas as pd # 构造原始DataFrame raw_data = { 2017: [10, 5], 2018: [15, 10], 2019: [20, 20] } df = pd.DataFrame(raw_data, index=['Bill', 'Jim']) # 执行格式转换 converted_df = df.reset_index().melt( id_vars='index', var_name='Year', value_name='Amount' ).rename(columns={'index': 'Name'}) # 输出结果 print(converted_df)
代码说明
reset_index():把原DataFrame的行索引(姓名)转为名为index的普通列melt():id_vars:指定转换后保留的标识列(此处为姓名列)var_name:设置原年份列名对应的新列名value_name:设置原数值对应的新列名
rename():将临时的index列重命名为Name,匹配目标格式
运行后即可得到符合要求的时间序列格式数据。
内容的提问来源于stack exchange,提问作者Jpod31
相关产品推荐
相关产品推荐

