python - 将数据集拆分为年度时间序列
问题描述
我有一个数据集,它为我提供了一个唯一标识符和不同的列,其中包含每年的值。它看起来如下:
ID | 价值90 | 价值91 | 价值92 | 价值93 | .. | 价值16 |
---|---|---|---|---|---|---|
A B C D | 1 | 2 | 3 | 4 | .. | 5 |
EFGH | 6 | 7 | 8 | 9 | .. | 10 |
IJKL | 11 | 12 | 13 | 14 | .. | 15 |
df = pd.Dataframe({'ID':[ABCD, EFGH, IJKL], 'value90':[1, 6, 11], 'value91':[2,7,12], 'value92':[3,8,13], 'value93':[4,9,14], 'value16':[5,10,15]}
我正在寻找以下输出:
年 | ID | 价值 |
---|---|---|
1990 | 美国广播公司 | 1 |
1991 | 美国广播公司 | 2 |
1992 | 美国广播公司 | 3 |
... | ...... | ... |
2016 年 | 美国广播公司 | 5 |
... | ...... | ... |
2016 年 | IJKL | 15 |
我正在使用 pandas,但不确定如何生成我正在寻找的最终输出。谢谢!
解决方案
您可以使用pd.melt来获得大部分路径,然后排序:
import pandas as pd
df = pd.DataFrame({'ID':['ABCD', 'EFGH', 'IJKL'], 'value90':[1, 6, 11], 'value91':[2,7,12], 'value92':[3,8,13], 'value93':[4,9,14], 'value16':[5,10,15]})
print(df)
df2 = pd.melt(df, id_vars=["ID"],var_name="Year", value_name="Value")
df2 = df2.sort_values(by=['ID'])
df2 = df2.filter(["Year","ID","Value"])
print(df2)
[输出]
ID value90 value91 value92 value93 value16
0 ABCD 1 2 3 4 5
1 EFGH 6 7 8 9 10
2 IJKL 11 12 13 14 15
Year ID Value
0 value90 ABCD 1
3 value91 ABCD 2
6 value92 ABCD 3
9 value93 ABCD 4
12 value16 ABCD 5
1 value90 EFGH 6
4 value91 EFGH 7
7 value92 EFGH 8
10 value93 EFGH 9
13 value16 EFGH 10
2 value90 IJKL 11
5 value91 IJKL 12
8 value92 IJKL 13
11 value93 IJKL 14
14 value16 IJKL 15
推荐阅读
- html - 如何将样式应用于文件输入中的按钮
- java - 计算文件java程序中的单词
- apache-camel - camel rest-dsl 与 https 和 undertow 组件结合使用
- php - Laravel 小部件和小部件框
- angular - 如何在每个服务调用中以角度显示加载程序
- java - 我应该如何在不使用任何同步的情况下理想地编写单例和线程安全类
- python - 提取嵌入在 PDF 文档中的财务表格
- javascript - Javascript:字符串中的零填充
- spring - 当我提交注册表时,它不会执行 post 控制器
- javascript - 如何从调用函数之外的axios响应中获取数据