我有一些csv文件,其中包含使用串行终端软件记录的数据。数据以可变的采样率生成:
在发生事件的情况下,每秒会生成许多字符串 参见示例:
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 毫秒的时间增量?
谢谢。
答案 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)