Trong nhiều trường hợp, bạn có thể sử dụng chức năng to_timedelta
cho việc này. Nó sẽ chuyển đổi một chuỗi để một 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')
Tuy nhiên, có vẻ như pd.to_timedelta ('30T') không làm việc, nhưng điều này có lẽ có thể được coi là một tính năng còn thiếu.
Nhưng, đối với cái này nó không có tác dụng nếu bạn lần đầu tiên chuyển nó sang một đối tượng tần số và sau đó cung cấp cho nó để 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')
Nếu bạn bắt đầu từ một freqstr
từ một DatetimeIndex, cách tiếp cận thứ hai sẽ luôn luôn làm việc. Tuy nhiên, bạn cũng có thể sử dụng freq
thay vì freqstr
, trả về đối tượng tần số trực tiếp:
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')
Bạn có thể cho đầu vào của mình không? –
có thể trùng lặp của [Cách tạo đối tượng timedelta từ một chuỗi đơn giản] (http://stackoverflow.com/questions/4628122/how-to-construct-a-timedelta-object-from-a-simple-string) – SiHa
@ColonelBeauvel: đầu vào là các chuỗi như "30T" hoặc là hoặc được phục hồi từ thuộc tính 'freqstr' của một DateTimeIndex –