如何将以下数据框转换为特定格式?

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').

以上是关于如何将以下数据框转换为特定格式?的主要内容,如果未能解决你的问题,请参考以下文章

如何将长格式的数据框转换为适当格式的列表?

如何将调查熊猫数据框转换为可用于 Python 中的 BI 工具的不同格式?

将熊猫数据框转换为具有以下格式的excel

如何将数据框转换为具有混合列类型的稀疏矩阵?

如何将数据帧切片转换为新数据帧

如何将一列数据框转换为具有json格式值的分布列(PYTHON)