2015-07-17 16 views
6

"30T" (30 dakika) "2S" (2 saniye) gibi bir dizeyle temsil edilen frekansları zaman çizelgesiyle karşılaştırılabilecek bir şeye dönüştürmek mümkün mü?Pandalar frek dizesini zaman çizelgesine dönüştürün

Mümkünse pandaların içinde bir mekanizma arıyorum. these gibi mekanizmaları kullanarak olası tüm dize dönüşümlerini kodlamak sağlam olmaz.

+0

Eğer giriş izin verir misin: Ama, aynı zamanda doğrudan bir frekans nesnesi döndüren yerine freqstr ait freq, kullanabilir? –

+0

olası bir kopyası [Basit bir dizeden bir timedelta nesnesi nasıl oluşturulur] (http://stackoverflow.com/questions/4628122/how-to-construct-a-timedelta-object-from-a-simple-string) – SiHa

+0

@ColonelBeauvel: giriş, DateTimeIndex'in 'freqstr' özniteliğiyle olduğu gibi ya da kurtarılmış olarak" 30T "gibi dizelerdir. –

cevap

9

Çoğu durumda, bunun için to_timedelta işlevini kullanabilirsiniz.

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') 

Ancak bu işe yaramazsa o pd.to_timedelta ('30T') görünüyor, ama bu belki eksik bir özellik olarak kabul edilebilir: Bu bir timedelta bir dizeyi dönüştürür.
Ama, önce bir frekans nesnesine dönüştürmek eğer bu bir çalışır ve sonra to_timedelta bunu tedarik:

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') 

Bir DatetimeIndex bir freqstr dan başlarsanız, ikinci yaklaşım her zaman çalışır.

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') 
İlgili konular