我有一系列交易数据,其中交易时间戳只是细化到第二个。有些交易发生在同一秒内,但我无法获得毫秒时间戳。我不想摆脱重复 - 相反,我想通过假设一秒钟内的多笔交易相隔1毫秒(一秒钟内最多10笔或20笔交易,因此赢得&#),使指数更加精细化39;超过每秒1000毫秒最大值)。例如,我有以下
8:31:58.000 AM trade1
8:31:58.000 AM trade2
8:31:58.000 AM trade3
8:31:58.000 AM trade4
并想生成
8:31:58.000 AM trade1
8:31:58.001 AM trade2
8:31:58.002 AM trade3
8:31:58.003 AM trade4
或者我对其他方法持开放态度 - 想法是在拥有唯一索引的同时保留数据。想法?
答案 0 :(得分:3)
假设这是你的输入:
df
trade
08:31:58 trade1
08:31:58 trade2
08:31:58 trade3
08:31:58 trade4
将索引转换为datetime
。然后,按索引分组,获取累计计数并将其转换为timedelta
。
最后,添加结果并分配。
i = pd.to_datetime(df.index, format='%H:%M:%S')
j = pd.to_timedelta(df.groupby(df.index).cumcount(), unit='ms').values
df.index = (i + j).time
df
trade
08:31:58 trade1
08:31:58.001000 trade2
08:31:58.002000 trade3
08:31:58.003000 trade4