将 TimedeltaIndex 转换为 DatetimeIndex

Convert TimedeltaIndex to DatetimeIndex

我正在尝试从 TimedeltaIndex 对象中提取时间。 我尝试使用 pd.to_datetime() 但出现以下错误:

>>> import pandas as pd
>>> times = pd.timedelta_range(start='10:00:00', end='12:00:00', freq='min')
>>> pd.to_datetime(times)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File ".../python3.6/site-packages/pandas/core/tools/datetimes.py", line 812, in to_datetime
    result = convert_listlike(arg, format, name=arg.name)
  File ".../python3.6/site-packages/pandas/core/tools/datetimes.py", line 371, in _convert_listlike_datetimes
    arg, _ = maybe_convert_dtype(arg, copy=False)
  File ".../python3.6/site-packages/pandas/core/arrays/datetimes.py", line 2123, in maybe_convert_dtype
    raise TypeError(f"dtype {data.dtype} cannot be converted to datetime64[ns]")
TypeError: dtype timedelta64[ns] cannot be converted to datetime64[ns]

我最终使用了以下行,但我希望有一个更优雅的解决方案: (pd.to_datetime(0) + times).time

您可以先将 TimeDeltaIndex 转换为整数,然后将其转换为日期时间。

import pandas as pd
import numpy as np

times = pd.timedelta_range(start='10:00:00', end='12:00:00', freq='min')
pd.to_datetime(times.astype(np.int64)).time

这给出了与 (pd.to_datetime(0) + 次).time

相同的输出