重新组合数据帧

2024-05-16 14:57:28 发布

您现在位置:Python中文网/ 问答频道 /正文

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

有更多的1000000我需要做一个数据帧,在每一行我有唯一的\u id列日期从1900-01-01 04:001900-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,但仍然需要很长时间

有什么建议如何快速地做到这一点吗


Tags: 数据函数id间隔start建议endapply
1条回答
网友
1楼 · 发布于 2024-05-16 14:57:28

在我的评论中,我认为这是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

相关问题 更多 >