如何将宽格式时间序列DataFrame转为长格式用于时序分析?
宽格式转长格式DataFrame的实现方法
完全可以实现这个转换,用Pandas的melt()方法就能轻松完成,这是处理宽表转长表的标准工具。
具体操作步骤:
- 导入Pandas并构造示例宽格式DataFrame:
import pandas as pd df = pd.DataFrame({ 'latitude': [37.8766, 35.4578], 'longitude': [30.5677, 30.7843], '2005': [50.356, 35.789], '2006': [70.435, 30.876], '2007': [60.367, 20.432] })
- 使用
melt()方法完成格式转换:
long_df = df.melt( id_vars=['latitude', 'longitude'], # 指定保持不变的标识列 var_name='year', # 原年份列名转换后的新列名 value_name="year'value" # 对应数值的列名 )
转换后的长格式结果:
| latitude | longitude | year | year'value |
|---|---|---|---|
| 37.8766 | 30.5677 | 2005 | 50.356 |
| 35.4578 | 30.7843 | 2005 | 35.789 |
| 37.8766 | 30.5677 | 2006 | 70.435 |
| 35.4578 | 30.7843 | 2006 | 30.876 |
| 37.8766 | 30.5677 | 2007 | 60.367 |
| 35.4578 | 30.7843 | 2007 | 20.432 |
如果之前重塑失败,大概率是没正确设置id_vars参数——这个参数用来标记不需要被"融化"的列,必须明确指定才能得到你想要的结构。
内容的提问来源于stack exchange,提问作者esam sayed
相关产品推荐
相关产品推荐

