W wielu przypadkach można użyć do tego funkcji to_timedelta
. Będzie przekonwertować ciąg do timedelta:
In [9]: pd.to_timedelta('30min')
Out[9]: Timedelta('0 days 00:30:00')
In [10]: pd.to_timedelta('2S')
Out[10]: Timedelta('0 days 00:00:02')
Jednak wydaje się, że pd.to_timedelta („30T”) nie działa, ale może to może być traktowane jako brakującego elementu.
Ale w tym jednym to działa, jeśli najpierw przekonwertować go do obiektu częstotliwości, a następnie dostarczyć go do to_timedelta
:
In [19]: from pandas.tseries.frequencies import to_offset
In [20]: pd.to_timedelta(to_offset('30T'))
Out[20]: Timedelta('0 days 00:30:00')
Jeśli zaczniesz od freqstr
ze DatetimeIndex, drugie podejście zawsze będzie działać. Ale można też użyć freq
zamiast freqstr
, która zwraca obiekt częstotliwości bezpośrednio:
In [34]: dtidx = pd.date_range('2012-01-01', periods=5, freq='30min')
In [35]: pd.to_timedelta(dtidx.freq)
Out[35]: Timedelta('0 days 00:30:00')
można dać swój wkład proszę? –
możliwy duplikat [Jak skonstruować obiekt timedelta z prostego łańcucha] (http://stackoverflow.com/questions/4628122/how-to-conctct-a-timedelta-object-from-a-simple-string) – SiHa
@ColonelBeauvel: dane wejściowe są łańcuchami takimi jak "30T", jak jest lub odzyskane z atrybutu 'freqstr' obiektu DateTimeIndex –