Условно редактировать индекс времени, проверяя предыдущую запись в кадре данных - PullRequest
0 голосов
/ 08 января 2019

У меня есть несколько CSV-файлов, содержащих данные, записанные с помощью программного обеспечения последовательного терминала. Данные генерируются с переменной частотой дискретизации:

  • обычно 1 строка каждые 10 секунд
  • в случае событий генерируется много строк в секунду Смотрите пример:

    2019-01-04 12: 39: 40,0,0,0,0,0,0,0,0,2048,2048

    2019-01-04 12: 39: 50,0,0,0,0,0,0,0,0,2048,2048

    2019-01-04 12: 40: 00,0,0,0,0,0,0,0,0,2048,2048

    2019-01-04 12: 40: 09,92,20,306,302,0,0,0,0,2548,1956

    2019-01-04 12: 40: 09,112,24,306,302,0,0,0,0,2626,1923

    2019-01-04 12: 40: 09,136,32,306,302,0,0,0,0,2688,1884

    2019-01-04 12: 40: 09,156,40,306,302,0,0,0,0,2752,1839

    2019-01-04 12: 40: 09,180,48,306,302,0,0,0,0,2795,1809

    2019-01-04 12: 40: 09,200,60,306,302,0,0,0,0,2815,1773

Метка времени добавляется программным обеспечением терминала с использованием системного времени ПК в качестве источника. К сожалению, программное обеспечение терминала не добавляет миллисекунды к метке времени, поэтому при импорте csv в фрейм данных у меня есть несколько записей с одной и той же меткой времени. Как я могу проверить, есть ли смежные записи с одной и той же отметкой времени, и, в этом случае, добавить временную дельту в n миллисекунд к записям в течение одной секунды?

Спасибо.

1 Ответ

0 голосов
/ 08 января 2019

Я полагаю, что вам нужно cumcount для счетчика на группы, конвертируйте в миллисекунды timedeltas с to_timedelta и добавьте к DatetimeIndex:

print (df)
                       a    b    c    d  e  f  g  h     i     j
0                                                              
2019-01-04 12:39:11    0    0    0    0  0  0  0  0  2048  2048
2019-01-04 12:39:21    0    0    0    0  0  0  0  0  2048  2048
2019-01-04 12:39:31    0    0    0    0  0  0  0  0  2048  2048
2019-01-04 12:39:40    0    0    0    0  0  0  0  0  2048  2048
2019-01-04 12:39:50    0    0    0    0  0  0  0  0  2048  2048
2019-01-04 12:40:00    0    0    0    0  0  0  0  0  2048  2048
2019-01-04 12:40:09   92   20  306  302  0  0  0  0  2548  1956
2019-01-04 12:40:09  112   24  306  302  0  0  0  0  2626  1923
2019-01-04 12:40:09  136   32  306  302  0  0  0  0  2688  1884
2019-01-04 12:40:09  156   40  306  302  0  0  0  0  2752  1839
2019-01-04 12:40:09  180   48  306  302  0  0  0  0  2795  1809
2019-01-04 12:40:09  200   60  306  302  0  0  0  0  2815  1773
2019-01-04 12:40:09  216   68  306  302  0  0  0  0  2826  1736
2019-01-04 12:40:09  232   80  306  302  0  0  0  0  2817  1715
2019-01-04 12:40:09  244   88  306  302  0  0  0  0  2804  1665
2019-01-04 12:40:09  256  100  306  302  0  0  0  0  2756  1636

print (df.index)
DatetimeIndex(['2019-01-04 12:39:11', '2019-01-04 12:39:21',
               '2019-01-04 12:39:31', '2019-01-04 12:39:40',
               '2019-01-04 12:39:50', '2019-01-04 12:40:00',
               '2019-01-04 12:40:09', '2019-01-04 12:40:09',
               '2019-01-04 12:40:09', '2019-01-04 12:40:09',
               '2019-01-04 12:40:09', '2019-01-04 12:40:09',
               '2019-01-04 12:40:09', '2019-01-04 12:40:09',
               '2019-01-04 12:40:09', '2019-01-04 12:40:09'],
              dtype='datetime64[ns]', name=0, freq=None)

df.index += pd.to_timedelta(df.groupby(level=0).cumcount(), unit='ms')
print (df)
                           a    b    c    d  e  f  g  h     i     j
2019-01-04 12:39:11.000    0    0    0    0  0  0  0  0  2048  2048
2019-01-04 12:39:21.000    0    0    0    0  0  0  0  0  2048  2048
2019-01-04 12:39:31.000    0    0    0    0  0  0  0  0  2048  2048
2019-01-04 12:39:40.000    0    0    0    0  0  0  0  0  2048  2048
2019-01-04 12:39:50.000    0    0    0    0  0  0  0  0  2048  2048
2019-01-04 12:40:00.000    0    0    0    0  0  0  0  0  2048  2048
2019-01-04 12:40:09.000   92   20  306  302  0  0  0  0  2548  1956
2019-01-04 12:40:09.001  112   24  306  302  0  0  0  0  2626  1923
2019-01-04 12:40:09.002  136   32  306  302  0  0  0  0  2688  1884
2019-01-04 12:40:09.003  156   40  306  302  0  0  0  0  2752  1839
2019-01-04 12:40:09.004  180   48  306  302  0  0  0  0  2795  1809
2019-01-04 12:40:09.005  200   60  306  302  0  0  0  0  2815  1773
2019-01-04 12:40:09.006  216   68  306  302  0  0  0  0  2826  1736
2019-01-04 12:40:09.007  232   80  306  302  0  0  0  0  2817  1715
2019-01-04 12:40:09.008  244   88  306  302  0  0  0  0  2804  1665
2019-01-04 12:40:09.009  256  100  306  302  0  0  0  0  2756  1636
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...