Blockquote
我有以下数据框:
uniquie_id gsett start end catpri rep
0 000001_01 2 1900-01-01 04:00:00 1900-01-01 07:50:00 1 23
1 000001_01 2 1900-01-01 07:50:00 1900-01-01 08:00:00 2 1
2 000001_01 2 1900-01-01 08:00:00 1900-01-01 08:10:00 3 1
3 000001_01 2 1900-01-01 08:10:00 1900-01-01 08:30:00 4 2
4 000001_01 2 1900-01-01 08:30:00 1900-01-01 09:50:00 5 8
5 000001_01 2 1900-01-01 09:50:00 1900-01-01 10:00:00 2 1
6 000001_01 2 1900-01-01 10:00:00 1900-01-01 11:50:00 6 11
7 000001_01 2 1900-01-01 11:50:00 1900-01-01 12:00:00 4 1
8 000001_01 2 1900-01-01 12:00:00 1900-01-01 13:50:00 4 11
9 000001_01 2 1900-01-01 13:50:00 1900-01-01 14:50:00 7 6
10 000001_01 2 1900-01-01 14:50:00 1900-01-01 15:50:00 8 6
11 000001_01 2 1900-01-01 15:50:00 1900-01-01 16:00:00 3 1
12 000001_01 2 1900-01-01 16:00:00 1900-01-01 16:50:00 3 5
13 000001_01 2 1900-01-01 16:50:00 1900-01-01 17:50:00 3 6
14 000001_01 2 1900-01-01 17:50:00 1900-01-01 18:00:00 9 1
15 000001_01 2 1900-01-01 18:00:00 1900-01-01 18:40:00 5 4
16 000001_01 2 1900-01-01 18:40:00 1900-01-01 18:50:00 9 1
17 000001_01 2 1900-01-01 18:50:00 1900-01-01 20:50:00 4 12
18 000001_01 2 1900-01-01 20:50:00 1900-01-01 21:20:00 7 3
19 000001_01 2 1900-01-01 21:20:00 1900-01-01 21:30:00 8 1
20 000001_01 2 1900-01-01 21:30:00 1900-01-01 21:50:00 8 2
21 000001_01 2 1900-01-01 21:50:00 1900-01-01 22:00:00 10 1
22 000001_01 2 1900-01-01 22:00:00 1900-01-02 00:50:00 10 17
23 000001_01 2 1900-01-01 00:50:00 1900-01-02 04:00:00 13 19
我需要制作一个数据帧,其中每行中有我有unique_id的数据帧要多得多,该列的日期为1900-01-01 04:00
至1900-01-02 04:00:00
,间隔为10分钟。每行/每列中的值是catpri
值。
它看起来应该像这样:
1900-01-01 04:00:00 1900-01-01 04:10:00 ... 1900-01-02 03:50:00 1900-01-02 04:00:00
000001_01 1 1 ... 13 13
我试图编写一个函数并使用apply
,但它仍然需要花些时间。
任何建议如何快速地做到这一点?
答案 0 :(得分:1)
正如我的评论所述,我认为这是df.pivot
的用例,如下所述:
df.pivot(index='unique_id',columns='start', values='catpri')
start 1900-01-01 00:50:00 1900-01-01 04:00:00 1900-01-01 07:50:00 1900-01-01 08:00:00 1900-01-01 08:10:00 1900-01-01 08:30:00 1900-01-01 09:50:00 1900-01-01 10:00:00 1900-01-01 11:50:00 1900-01-01 12:00:00 ... 1900-01-01 16:50:00 1900-01-01 17:50:00 1900-01-01 18:00:00 1900-01-01 18:40:00 1900-01-01 18:50:00 1900-01-01 20:50:00 1900-01-01 21:20:00 1900-01-01 21:30:00 1900-01-01 21:50:00 1900-01-01 22:00:00
unique_id
000001_01 13 1 2 3 4 5 2 6 4 4 ... 3 9 5 9 4 7 8 8 10 10
包括重新采样(感谢@FabienP)以获取丢失的时间间隔:
df.set_index('start').resample(rule='10T').ffill().reset_index().pivot(index='unique_id',columns='start', values='catpri')
start 1900-01-01 00:50:00 1900-01-01 01:00:00 1900-01-01 01:10:00 1900-01-01 01:20:00 1900-01-01 01:30:00 1900-01-01 01:40:00 1900-01-01 01:50:00 1900-01-01 02:00:00 1900-01-01 02:10:00 1900-01-01 02:20:00 ... 1900-01-01 20:30:00 1900-01-01 20:40:00 1900-01-01 20:50:00 1900-01-01 21:00:00 1900-01-01 21:10:00 1900-01-01 21:20:00 1900-01-01 21:30:00 1900-01-01 21:40:00 1900-01-01 21:50:00 1900-01-01 22:00:00
unique_id
000001_01 13 13 13 13 13 13 13 13 13 13 ... 4 4 7 7 7 8 8 8 10 10
1 rows × 128 columns