从timedelta构建一个Pandas pd.tseries.offsets

Fem*_*der 6 python datetime timedelta pandas

我想pd.tseries.offsets从一个人建立一个熊猫datetime.timedelta

In [1]: from pandas.tseries.frequencies import to_offset
In [2]: import datetime
In [3]: td = datetime.timedelta(hours=1)


In [4]: to_offset('1H')
Out [4]: <Hour>

In [5]: to_offset(td)
Out [5]: ValueError
Run Code Online (Sandbox Code Playgroud)

任何(其他)想法?

ely*_*ase 5

to_offset返回pd.DateOffset。因此,您可以直接构建此对象:

>>> td = datetime.timedelta(hours=1)
>>> pd.DateOffset(seconds=td.total_seconds())
<DateOffset: kwds={'seconds': 3600.0}>

>>> to_offset(pd.DateOffset(seconds=td.total_seconds()))
<DateOffset: kwds={'seconds': 3600.0}>
Run Code Online (Sandbox Code Playgroud)

对于更好的字符串表示形式:

>>> pd.DateOffset(days=td.days, 
                  hours=td.seconds // 3600, 
                  minutes=(td.seconds // 60) % 60)
<DateOffset: kwds={'hours': 1, 'minutes': 0, 'days': 0}>
Run Code Online (Sandbox Code Playgroud)


Lit*_*les 3

现在这适用于 pandas 23.x。我找不到它是什么时候推出的。

from pandas.tseries.frequencies import to_offset

td = datetime.timedelta(hours=1)

to_offset('1H')
>>> <Hour>

to_offset(td)
>>> <Hour>
Run Code Online (Sandbox Code Playgroud)