python - 如何将时间序列中的每个值作为具有唯一 ID 的列
问题描述
我有一个唯一的 ID 和时间序列数据。时间序列数据包含 3 个宏变量。我想构建数据框,其中列是 date ,它们是相同的。以下是初始和预期输出的示例
ID的长度在这里并不重要
解决方案
设置
重新创建 OP 的数据框
dat = [[3, 4, 1], [4, 5, 3]]
idx = [2017, 2018]
col = ['A', 'B', 'C']
df = pd.DataFrame(dat, idx, col).rename_axis('time')
pd.concat
我说唱enumerate
从dict
哪里enumerate
开始1
以匹配ID
从开始的OP1
new = pd.concat(dict(enumerate([df] * 3, 1)), names=['ID']).unstack()
new.columns = [f'{x}{y}' for x, y in new.columns]
new
A2017 A2018 B2017 B2018 C2017 C2018
ID
1 3 4 4 5 1 3
2 3 4 4 5 1 3
3 3 4 4 5 1 3
细节
查看连接的数据框是什么样的
pd.concat(dict(enumerate([df] * 3, 1)), names=['ID'])
A B C
ID time
1 2017 3 4 1
2018 4 5 3
2 2017 3 4 1
2018 4 5 3
3 2017 3 4 1
2018 4 5 3
如果我们拆开它
A B C
time 2017 2018 2017 2018 2017 2018
ID
1 3 4 4 5 1 3
2 3 4 4 5 1 3
3 3 4 4 5 1 3
剩下要做的就是将列级别粉碎在一起,您可以在上面看到我是如何做到的。
推荐阅读
- javascript - 始终声明局部变量
- python - anaconda conda:错误:参数命令:尝试更新软件包时选择无效
- r - 从 R 中的多个向量创建事务
- odoo - 在 Odoo 中修改产品标签 xml
- javascript - 如何使用 intl-tel-input 格式化数字?
- django - TypeError 此函数的关键字参数无效
- php - 从视频 ubuntu ffmpeg 创建拇指时出错
- dart - Flutter:通过实现一个方法来扩展一个类
- ios - qlpreviewcontroller 导航栏 - 如何将 pageCount 更改为字符串
- sql - SQL查询以获取具有uid的所有唯一行