pandas将datetimeindex转换为timedeltaindex

时间:2017-12-15 07:19:44

标签: pandas

我有两个dfs。一个有DatetimeIndex,另一个有TimedeltaIndex。

DatetimeIndex(['2017-12-11 09:00:00', '2017-12-11 09:01:00',
           ...
           '2017-12-11 14:59:00', '2017-12-11 15:00:00'],
          dtype='datetime64[ns]', length=361, freq='T')


TimedeltaIndex(['09:00:00', '09:01:00', '09:02:00', '09:03:00', '09:04:00',
            ...
            '14:55:00', '14:56:00', '14:57:00', '14:58:00', '14:59:00'],
           dtype='timedelta64[ns]', name='ts', length=300, freq=None)

我正在尝试连接它们

pd.concat([d1, d2], axis=1)

但它会抛出

'Index' object has no attribute 'freq'

大概是因为索引时间不同。我试图通过使用d1.index.appy或to_timedelta来更改索引,但这失败了,因为我无法在索引上使用apply并使用pd.to_timedelta throws

Argument 'values' has incorrect type (expected numpy.ndarray, got Index)

我必须有一些直截了当的方式。任何建议我如何轻松地做到这一点。我不需要日期信息,因此任何解决方案都可能会丢失。

1 个答案:

答案 0 :(得分:1)

我认为您可以to_timedelta使用strftime

d1.index = pd.to_timedelta(d1.index.strftime('%H:%M:%S'))

或者:

d1 = d1.set_index(pd.to_timedelta(d1.index.strftime('%H:%M:%S')))