有条件地编辑时间索引,检查数据框中的先前记录

时间:2019-01-08 08:57:14

标签: python pandas numpy dataframe timestamp

我有一些csv文件,其中包含使用串行终端软件记录的数据。数据以可变的采样率生成:

  • 通常每10秒1行
  • 在发生事件的情况下,每秒会生成许多字符串 参见示例:

    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,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

时间戳是由终端软件使用PC系统时间作为来源添加的。 不幸的是,终端软件没有将毫秒添加到时间戳,因此,在将csv导入数据帧时,我有多个具有相同时间戳的记录。 如何检查是否存在具有相同时间戳的连续记录,并且在这种情况下,如何在同一秒内向记录添加 n 毫秒的时间增量?

谢谢。

1 个答案:

答案 0 :(得分:0)

我相信您需要cumcount个组的计数器,并用to_timedelta转换为毫秒时间增量,然后添加到InstallFinalize

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)