如何将以下数据框转换为特定格式?
Posted
技术标签:
【中文标题】如何将以下数据框转换为特定格式?【英文标题】:How do I convert the following dataframe into a particular format? 【发布时间】:2021-10-20 15:05:24 【问题描述】:我有以下格式的时间序列数据:
df.columns= ['Timestamp','Parameter','Value']
在这里,“参数”列每 5 分钟有重复字符,一旦参数更改,时间戳开始为另一个参数重复。一小部分数据如下所示:
'Timestamp': 0: '2019-01-01 06:00:00+00:00',
1: '2019-01-01 06:05:00+00:00',
2: '2019-01-01 06:10:00+00:00',
3: '2019-01-01 06:15:00+00:00',
4: '2019-01-01 06:20:00+00:00',
5: '2019-01-01 06:25:00+00:00',
6: '2019-01-01 06:30:00+00:00',
7: '2019-01-01 06:00:00+00:00',
8: '2019-01-01 06:05:00+00:00',
9: '2019-01-01 06:10:00+00:00',
10: '2019-01-01 06:15:00+00:00',
11: '2019-01-01 06:20:00+00:00',
12: '2019-01-01 06:25:00+00:00',
13: '2019-01-01 06:30:00+00:00',
14: '2019-01-01 06:00:00+00:00',
15: '2019-01-01 06:05:00+00:00',
16: '2019-01-01 06:10:00+00:00',
17: '2019-01-01 06:15:00+00:00',
18: '2019-01-01 06:20:00+00:00',
19: '2019-01-01 06:25:00+00:00',
20: '2019-01-01 06:30:00+00:00',
21: '2019-01-01 06:00:00+00:00',
22: '2019-01-01 06:05:00+00:00',
23: '2019-01-01 06:10:00+00:00',
24: '2019-01-01 06:15:00+00:00',
25: '2019-01-01 06:20:00+00:00',
26: '2019-01-01 06:25:00+00:00',
27: '2019-01-01 06:30:00+00:00',
'Parameter': 0: 'A',
1: 'A',
2: 'A',
3: 'A',
4: 'A',
5: 'A',
6: 'A',
7: 'B',
8: 'B',
9: 'B',
10: 'B',
11: 'B',
12: 'B',
13: 'B',
14: 'C',
15: 'C',
16: 'C',
17: 'C',
18: 'C',
19: 'C',
20: 'C',
21: 'D',
22: 'D',
23: 'D',
24: 'D',
25: 'D',
26: 'D',
27: 'D',
'Value': 0: 1,
1: 2,
2: 3,
3: 4,
4: 5,
5: 6,
6: 7,
7: 3,
8: 4,
9: 1,
10: 2,
11: 5,
12: 8,
13: 9,
14: 2,
15: 4,
16: 5,
17: 5,
18: 3,
19: 4,
20: 9,
21: 1,
22: 4,
23: 7,
24: 2,
25: 2,
26: 3,
27: 1
我想更改以下格式的数据以应用我的算法:
df.columns=['Timestamp','A','B','C','D']
我已经手动准备了一个数据框来展示它的外观:
'timestamp': 0: '2019-01-01 06:00:00+00:00',
1: '2019-01-01 06:05:00+00:00',
2: '2019-01-01 06:10:00+00:00',
3: '2019-01-01 06:15:00+00:00',
4: '2019-01-01 06:20:00+00:00',
5: '2019-01-01 06:25:00+00:00',
6: '2019-01-01 06:30:00+00:00',
'A': 0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7,
'B': 0: 3, 1: 4, 2: 1, 3: 2, 4: 5, 5: 8, 6: 9,
'C': 0: 2, 1: 4, 2: 5, 3: 5, 4: 3, 5: 4, 6: 9,
'D': 0: 1, 1: 4, 2: 7, 3: 2, 4: 2, 5: 3, 6: 1
我该如何解决这个问题?
【问题讨论】:
【参考方案1】:用途:
df.pivot('Timestamp', 'Parameter', 'Value')
输出:
Parameter A B C D
Timestamp
2019-01-01 06:00:00+00:00 1 3 2 1
2019-01-01 06:05:00+00:00 2 4 4 4
2019-01-01 06:10:00+00:00 3 1 5 7
2019-01-01 06:15:00+00:00 4 2 5 2
2019-01-01 06:20:00+00:00 5 5 3 2
2019-01-01 06:25:00+00:00 6 8 4 3
2019-01-01 06:30:00+00:00 7 9 9 1
【讨论】:
多列几列后可以转换回原来的格式吗? 是的,有很多方法。df.stack().reset_index()
, df.reset_index().melt('timestamp')
.以上是关于如何将以下数据框转换为特定格式?的主要内容,如果未能解决你的问题,请参考以下文章