Продолжение подсчета идентификаторов после перезагрузки датчика - PullRequest
1 голос
/ 21 января 2020

У меня есть набор данных от датчиков с ObjectID и метками времени.

id      id   x   y   height  datetime
21124   494 243 243 4524    2019-09-11 11:53:58.958
21125   438 345 189 1016    2019-09-11 11:53:58.958
21126   309 314 168 1050    2019-09-11 11:53:58.958
21127   502 488 229 2535    2019-09-11 11:53:58.958
21128   503 228 159 831     2019-09-11 11:53:58.958
21129   506 234 272 4056    2019-09-11 11:53:58.958
21130   507 515 284 2477    2019-09-11 11:53:58.958
21131   508 471 107 1115    2019-09-11 11:53:58.958
21132   2   558 95  1050    2019-09-11 12:06:43.340
21133   3   379 100 1323    2019-09-11 12:06:43.340
21134   6   222 240 4860    2019-09-11 12:06:43.340
21135   2   430 277 2008    2019-09-11 12:06:43.340
21136   5   246 251 3987    2019-09-11 12:06:43.340
21137   6   378 114 1303    2019-09-11 12:06:43.340
21138   4   322 271 3133    2019-09-11 12:06:43.340
21139   3   339 123 1626    2019-09-11 12:06:43.340
21140   4   356 159 979     2019-09-11 12:06:43.340
21141   5   465 152 1440    2019-09-11 12:06:43.340

Иногда датчик сам перезагружается и начинает снова считать идентификаторы объектов с нуля. (см. промежуток времени в 11: 53/12: 06). Проблема: после перезагрузки, и если идентификатор уже встречался ранее в наборе данных, продолжите подсчет с последнего идентификатора.

Таким образом, вместо перезапуска с «2» после перезагрузки следует заменить идентификаторы идентификаторами, которые продолжают подсчет последнего идентификатора перед перезагрузкой, здесь «508».

ID 2, 3, 6 и т. Д. Ранее встречались в наборе данных, поэтому их необходимо заменить. Имеет ли это смысл?

Спасибо за помощь !!

1 Ответ

1 голос
/ 21 января 2020

шаг 1: определите свой «хороший» идентификатор, получив индекс max(id)

max_id = max(df['id'])
max_loc = df.loc[df['id']==max_id]['id'].index[0] 

, следовательно:

ok_ids = list(df[df.index<=max_loc]['id'])

шаг 2: получить нумерацию new_ids от max_id вперед.

import numpy as np
new_ids = np.arange(1+max_id,max_id+len(df[df.index>max_loc])+1,1)

шаг 3: расширить и заменить столбец id:

ok_ids.extend(new_ids)
df['id']=ok_ids

желаемый результат:

         id id.1    x   y   height  datetime
21124   494 243   243   4524    2019-09-11  11:53:58.958
21125   438 345   189   1016    2019-09-11  11:53:58.958
21126   309 314   168   1050    2019-09-11  11:53:58.958
21127   502 488   229   2535    2019-09-11  11:53:58.958
21128   503 228   159   831 2019-09-11  11:53:58.958
21129   506 234   272   4056    2019-09-11  11:53:58.958
21130   507 515   284   2477    2019-09-11  11:53:58.958
21131   508 471   107   1115    2019-09-11  11:53:58.958
21132   509 558   95    1050    2019-09-11  12:06:43.340
21133   510 379   100   1323    2019-09-11  12:06:43.340
21134   511 222   240   4860    2019-09-11  12:06:43.340
21135   512 430   277   2008    2019-09-11  12:06:43.340
21136   513 246   251   3987    2019-09-11  12:06:43.340
21137   514 378   114   1303    2019-09-11  12:06:43.340
21138   515 322   271   3133    2019-09-11  12:06:43.340
21139   516 339   123   1626    2019-09-11  12:06:43.340
21140   517 356   159   979 2019-09-11  12:06:43.340
21141   518 465   152   1440    2019-09-11  12:06:43.340

Примечание: не делайте не пытайтесь изменить df ['id'], так как он предупредит вас о возврате вида вместо копии (SettingWithCopyWarnning)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...