问题
Datanovice helped me in this post Determining group size based entry and exit times of IDs in my df, so I got further with my problem. But, how can I now group the dataset (see subset below) into datetime seconds and look at the 'min' values of the IDs and count the unique IDs in the grouped 'date' second that have common 'min' values with a flexibility of a minute, for example. Is there any smart way to do this?
t_code date x y id min max
4632 2019-09-17 10:17:10 209 201 5170 2019-09-17 09:38:19 2019-09-17 12:47:49
4632 2019-09-17 10:17:10 362 67 5163 2019-09-17 09:38:03 2019-09-17 10:18:29
4633 2019-09-17 10:17:11 209 200 5170 2019-09-17 09:38:19 2019-09-17 12:47:49
4633 2019-09-17 10:17:11 247 232 5177 2019-09-17 09:38:27 2019-09-17 11:14:21
4633 2019-09-17 10:17:11 337 157 5141 2019-09-17 09:37:22 2019-09-17 12:06:30
4633 2019-09-17 10:17:11 391 77 5284 2019-09-17 10:15:59 2019-09-17 10:18:30
4633 2019-09-17 10:17:11 363 69 5163 2019-09-17 09:38:03 2019-09-17 10:18:29
4633 2019-09-17 10:17:11 336 227 5282 2019-09-17 10:08:50 2019-09-17 13:13:44
4634 2019-09-17 10:17:12 247 232 5177 2019-09-17 09:38:27 2019-09-17 11:14:21
4634 2019-09-17 10:17:12 337 157 5141 2019-09-17 09:37:22 2019-09-17 12:06:30
4634 2019-09-17 10:17:12 391 76 5284 2019-09-17 10:15:59 2019-09-17 10:18:30
4634 2019-09-17 10:17:12 363 70 5163 2019-09-17 09:38:03 2019-09-17 10:18:29
4634 2019-09-17 10:17:12 335 227 5282 2019-09-17 10:08:50 2019-09-17 13:13:44
4634 2019-09-17 10:17:12 209 201 5170 2019-09-17 09:38:19 2019-09-17 12:47:49
4635 2019-09-17 10:17:13 391 77 5284 2019-09-17 10:15:59 2019-09-17 10:18:30
4635 2019-09-17 10:17:13 247 232 5177 2019-09-17 09:38:27 2019-09-17 11:14:21
4635 2019-09-17 10:17:13 209 201 5170 2019-09-17 09:38:19 2019-09-17 12:47:49
4635 2019-09-17 10:17:13 335 227 5282 2019-09-17 10:08:50 2019-09-17 13:13:44
4635 2019-09-17 10:17:13 363 69 5163 2019-09-17 09:38:03 2019-09-17 10:18:29
4635 2019-09-17 10:17:13 337 158 5141 2019-09-17 09:37:22 2019-09-17 12:06:30
4636 2019-09-17 10:17:14 337 158 5141 2019-09-17 09:37:22 2019-09-17 12:06:30
4636 2019-09-17 10:17:14 392 76 5284 2019-09-17 10:15:59 2019-09-17 10:18:30
4636 2019-09-17 10:17:14 247 232 5177 2019-09-17 09:38:27 2019-09-17 11:14:21
4636 2019-09-17 10:17:14 209 201 5170 2019-09-17 09:38:19 2019-09-17 12:47:49
4636 2019-09-17 10:17:14 335 227 5282 2019-09-17 10:08:50 2019-09-17 13:13:44
4637 2019-09-17 10:17:15 209 200 5170 2019-09-17 09:38:19 2019-09-17 12:47:49
4637 2019-09-17 10:17:15 247 233 5177 2019-09-17 09:38:27 2019-09-17 11:14:21
4637 2019-09-17 10:17:15 357 69 5163 2019-09-17 09:38:03 2019-09-17 10:18:29
4637 2019-09-17 10:17:15 335 227 5282 2019-09-17 10:08:50 2019-09-17 13:13:44
4637 2019-09-17 10:17:15 390 74 5284 2019-09-17 10:15:59 2019-09-17 10:18:30
4637 2019-09-17 10:17:15 337 157 5141 2019-09-17 09:37:22 2019-09-17 12:06:30
4638 2019-09-17 10:17:16 335 227 5282 2019-09-17 10:08:50 2019-09-17 13:13:44
4638 2019-09-17 10:17:16 337 154 5141 2019-09-17 09:37:22 2019-09-17 12:06:30
4638 2019-09-17 10:17:16 209 201 5170 2019-09-17 09:38:19 2019-09-17 12:47:49
4638 2019-09-17 10:17:16 247 232 5177 2019-09-17 09:38:27 2019-09-17 11:14:21
4638 2019-09-17 10:17:16 356 69 5163 2019-09-17 09:38:03 2019-09-17 10:18:29
4639 2019-09-17 10:17:17 247 232 5177 2019-09-17 09:38:27 2019-09-17 11:14:21
4639 2019-09-17 10:17:17 335 152 5141 2019-09-17 09:37:22 2019-09-17 12:06:30
4639 2019-09-17 10:17:17 355 71 5163 2019-09-17 09:38:03 2019-09-17 10:18:29
4639 2019-09-17 10:17:17 392 74 5284 2019-09-17 10:15:59 2019-09-17 10:18:30
4639 2019-09-17 10:17:17 335 227 5282 2019-09-17 10:08:50 2019-09-17 13:13:44
I have a very long data set and a sample of the expected outcome is something like this:
t_code date x y id min max GroupSize
4632 2019-09-17 10:17:10 209 201 5170 2019-09-17 09:38:19 2019-09-17 12:47:49 2
4632 2019-09-17 10:17:10 362 67 5163 2019-09-17 09:38:03 2019-09-17 10:18:29 2
4633 2019-09-17 10:17:11 209 200 5170 2019-09-17 09:38:19 2019-09-17 12:47:49 3
4633 2019-09-17 10:17:11 247 232 5177 2019-09-17 09:38:27 2019-09-17 11:14:21 3
4633 2019-09-17 10:17:11 337 157 5141 2019-09-17 09:37:22 2019-09-17 12:06:30 1
4633 2019-09-17 10:17:11 391 77 5284 2019-09-17 10:15:59 2019-09-17 10:18:30 1
4633 2019-09-17 10:17:11 363 69 5163 2019-09-17 09:38:03 2019-09-17 10:18:29 3
4633 2019-09-17 10:17:11 336 227 5282 2019-09-17 10:08:50 2019-09-17 13:13:44 1
4634 2019-09-17 10:17:12 247 232 5177 2019-09-17 09:38:27 2019-09-17 11:14:21 3
4634 2019-09-17 10:17:12 337 157 5141 2019-09-17 09:37:22 2019-09-17 12:06:30 1
4634 2019-09-17 10:17:12 391 76 5284 2019-09-17 10:15:59 2019-09-17 10:18:30 2
4634 2019-09-17 10:17:12 391 76 9000 2019-09-17 10:15:39 2019-09-17 10:18:30 2
4634 2019-09-17 10:17:12 363 70 5163 2019-09-17 09:38:03 2019-09-17 10:18:29 3
4634 2019-09-17 10:17:12 335 227 5282 2019-09-17 10:08:50 2019-09-17 13:13:44 1
4634 2019-09-17 10:17:12 209 201 5170 2019-09-17 09:38:19 2019-09-17 12:47:49 3
4635 2019-09-17 10:17:13 391 77 5284 2019-09-17 10:15:59 2019-09-17 10:18:30 1
4635 2019-09-17 10:17:13 247 232 5177 2019-09-17 09:38:27 2019-09-17 11:14:21 3
4635 2019-09-17 10:17:13 209 201 5170 2019-09-17 09:38:19 2019-09-17 12:47:49 3
4635 2019-09-17 10:17:13 335 227 5282 2019-09-17 10:08:50 2019-09-17 13:13:44 1
4635 2019-09-17 10:17:13 363 69 5163 2019-09-17 09:38:03 2019-09-17 10:18:29 3
Help is much appreciated!!
回答1:
Use:
df['Groupsize']=( df.groupby(['date',pd.Grouper(key = 'min',freq = 'T')])
.id
.transform('size') )
print(df)
#or this
#df['Groupsize']=( df.groupby([df['date'].dt.second,pd.Grouper(key = 'min',freq = 'T')])
# .id
# .transform('size') )
t_code date x y id min \
0 4632 2019-09-17 10:17:10 209 201 5170 2019-09-17 09:38:19
1 4632 2019-09-17 10:17:10 362 67 5163 2019-09-17 09:38:03
2 4633 2019-09-17 10:17:11 209 200 5170 2019-09-17 09:38:19
3 4633 2019-09-17 10:17:11 247 232 5177 2019-09-17 09:38:27
4 4633 2019-09-17 10:17:11 337 157 5141 2019-09-17 09:37:22
5 4633 2019-09-17 10:17:11 391 77 5284 2019-09-17 10:15:59
6 4633 2019-09-17 10:17:11 363 69 5163 2019-09-17 09:38:03
7 4633 2019-09-17 10:17:11 336 227 5282 2019-09-17 10:08:50
8 4634 2019-09-17 10:17:12 247 232 5177 2019-09-17 09:38:27
9 4634 2019-09-17 10:17:12 337 157 5141 2019-09-17 09:37:22
10 4634 2019-09-17 10:17:12 391 76 5284 2019-09-17 10:15:59
11 4634 2019-09-17 10:17:12 363 70 5163 2019-09-17 09:38:03
12 4634 2019-09-17 10:17:12 335 227 5282 2019-09-17 10:08:50
13 4634 2019-09-17 10:17:12 209 201 5170 2019-09-17 09:38:19
14 4635 2019-09-17 10:17:13 391 77 5284 2019-09-17 10:15:59
15 4635 2019-09-17 10:17:13 247 232 5177 2019-09-17 09:38:27
16 4635 2019-09-17 10:17:13 209 201 5170 2019-09-17 09:38:19
17 4635 2019-09-17 10:17:13 335 227 5282 2019-09-17 10:08:50
18 4635 2019-09-17 10:17:13 363 69 5163 2019-09-17 09:38:03
19 4635 2019-09-17 10:17:13 337 158 5141 2019-09-17 09:37:22
20 4636 2019-09-17 10:17:14 337 158 5141 2019-09-17 09:37:22
21 4636 2019-09-17 10:17:14 392 76 5284 2019-09-17 10:15:59
22 4636 2019-09-17 10:17:14 247 232 5177 2019-09-17 09:38:27
23 4636 2019-09-17 10:17:14 209 201 5170 2019-09-17 09:38:19
24 4636 2019-09-17 10:17:14 335 227 5282 2019-09-17 10:08:50
25 4637 2019-09-17 10:17:15 209 200 5170 2019-09-17 09:38:19
26 4637 2019-09-17 10:17:15 247 233 5177 2019-09-17 09:38:27
27 4637 2019-09-17 10:17:15 357 69 5163 2019-09-17 09:38:03
28 4637 2019-09-17 10:17:15 335 227 5282 2019-09-17 10:08:50
29 4637 2019-09-17 10:17:15 390 74 5284 2019-09-17 10:15:59
30 4637 2019-09-17 10:17:15 337 157 5141 2019-09-17 09:37:22
31 4638 2019-09-17 10:17:16 335 227 5282 2019-09-17 10:08:50
32 4638 2019-09-17 10:17:16 337 154 5141 2019-09-17 09:37:22
33 4638 2019-09-17 10:17:16 209 201 5170 2019-09-17 09:38:19
34 4638 2019-09-17 10:17:16 247 232 5177 2019-09-17 09:38:27
35 4638 2019-09-17 10:17:16 356 69 5163 2019-09-17 09:38:03
36 4639 2019-09-17 10:17:17 247 232 5177 2019-09-17 09:38:27
37 4639 2019-09-17 10:17:17 335 152 5141 2019-09-17 09:37:22
38 4639 2019-09-17 10:17:17 355 71 5163 2019-09-17 09:38:03
39 4639 2019-09-17 10:17:17 392 74 5284 2019-09-17 10:15:59
40 4639 2019-09-17 10:17:17 335 227 5282 2019-09-17 10:08:50
max Groupsize
0 2019-09-17 12:47:49 2
1 2019-09-17 10:18:29 2
2 2019-09-17 12:47:49 3
3 2019-09-17 11:14:21 3
4 2019-09-17 12:06:30 1
5 2019-09-17 10:18:30 1
6 2019-09-17 10:18:29 3
7 2019-09-17 13:13:44 1
8 2019-09-17 11:14:21 3
9 2019-09-17 12:06:30 1
10 2019-09-17 10:18:30 1
11 2019-09-17 10:18:29 3
12 2019-09-17 13:13:44 1
13 2019-09-17 12:47:49 3
14 2019-09-17 10:18:30 1
15 2019-09-17 11:14:21 3
16 2019-09-17 12:47:49 3
17 2019-09-17 13:13:44 1
18 2019-09-17 10:18:29 3
19 2019-09-17 12:06:30 1
20 2019-09-17 12:06:30 1
21 2019-09-17 10:18:30 1
22 2019-09-17 11:14:21 2
23 2019-09-17 12:47:49 2
24 2019-09-17 13:13:44 1
25 2019-09-17 12:47:49 3
26 2019-09-17 11:14:21 3
27 2019-09-17 10:18:29 3
28 2019-09-17 13:13:44 1
29 2019-09-17 10:18:30 1
30 2019-09-17 12:06:30 1
31 2019-09-17 13:13:44 1
32 2019-09-17 12:06:30 1
33 2019-09-17 12:47:49 3
34 2019-09-17 11:14:21 3
35 2019-09-17 10:18:29 3
36 2019-09-17 11:14:21 2
37 2019-09-17 12:06:30 1
38 2019-09-17 10:18:29 2
39 2019-09-17 10:18:30 1
40 2019-09-17 13:13:44 1
来源:https://stackoverflow.com/questions/59490590/groupby-time-interval-and-find-unique-ids-with-similar-min-values-entry-time-va