将 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
相同的输出
我正在尝试从 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
相同的输出