如何使具有重复日期时间索引条目的数据框唯一?

时间:2018-01-12 20:42:43

标签: python pandas datetime dataframe

我有一系列交易数据,其中交易时间戳只是细化到第二个。有些交易发生在同一秒内,但我无法获得毫秒时间戳。我不想摆脱重复 - 相反,我想通过假设一秒钟内的多笔交易相隔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 

或者我对其他方法持开放态度 - 想法是在拥有唯一索引的同时保留数据。想法?

1 个答案:

答案 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