python - 按 ID 分组并完成时间序列 Pandas
问题描述
我有一个观察一个 ID 的 pandas 数据框,我遇到的问题与此处解决的问题类似。
Timestamp ID
2014-10-16 15:05:17 123
2014-10-16 14:56:37 148
2014-10-16 14:25:16 123
2014-10-16 14:15:32 123
2014-10-16 13:41:01 123
2014-10-16 12:50:30 148
2014-10-16 12:28:54 123
2014-10-16 12:26:56 123
2014-10-16 12:25:12 123
...
2014-10-08 15:52:49 150
2014-10-08 15:04:50 150
2014-10-08 15:03:48 148
2014-10-08 15:02:27 200
2014-10-08 15:01:56 236
2014-10-08 13:27:28 147
2014-10-08 13:01:08 148
2014-10-08 12:52:06 999
2014-10-08 12:43:27 999
Name: summary, Length: 600
在提到的帖子中,他们展示了如何按 ID 分组以及如何进行计数。使用df['Week/Year'] = df['Timestamp'].apply(lambda x: "%d/%d" % (x.week, x.year))
我现在有这个:
Timestamp ID Week/Year
0 2014-10-16 15:05:17 123 42/2014
1 2014-10-16 14:56:37 150 42/2014
2 2014-10-16 14:25:16 123 42/2014
我的问题是,现在我想制作一个时间序列,所以实际上,我需要:
Category Week_42_2014 Week_43_2014 Week_44_2014
123 7 0 6
150 0 0 2 ...
也就是说,我需要将周作为一列,将类别作为行,并且还需要在没有观察的情况下填补周的空白。就我而言,我也需要几天,但我想它真的很相似。
谢谢,
解决方案
您可以使用pd.pivot_table
:
res = df.pivot_table(index='ID', columns='Week/Year', aggfunc='count', fill_value=0)
print(res)
Timestamp
Week/Year 41/2014 42/2014
ID
123 0 7
147 1 0
148 2 2
150 2 0
200 1 0
236 1 0
999 2 0
推荐阅读
- sql - 由于多列信息不同,对所有行进行标记;水晶报表
- python-3.x - 为什么 python 脚本运行时的结果在每个解释器上都不同,包括类方法/属性?
- c# - UnassignedReferenceException: Player 的变量 rb 没有被赋值
- python - 在 Python 中使用 writelines 将行添加到文件中还会复制不同位置的行吗?
- python - 在 Docker 中配置/设置/激活 Python Conda 环境
- javascript - Console.log 在 Chrome 控制台中未显示任何内容。(反应)
- javascript - 在本地显示 mbtiles 文件
- python - 尝试删除括号“[...]”内的每个字符
- javascript - 有没有一种简单的方法可以从提供级别/节点信息的数组构造结构化对象(带有嵌套对象)?
- python - 从 pandas 的 DF 列中的列表中删除非数字