首页 > 解决方案 > 如何将以下数据框转换为特定格式?

问题描述

我有以下格式的时间序列数据:

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}}

我该如何解决这个问题?

标签: pythonpandasdatetimetime-series

解决方案


利用:

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

推荐阅读