将TimedeltaIndex转换为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转换为integer,然后再将其转换为datetime。

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_detime(0(+次(相同的输出。time

最新更新