2017-01-07 4 views
3

Ich habe ein Zeitdelta im Format numpy.timedelta (64): value = numpy.timedelta64(30,'m')
(hier 30min).Python, Pandas, Numpy: Date_range: Übergabe eines np.timedelta als Freq. Argument

Gibt es eine Möglichkeit, diesen Wert an die Konstruktion eines Pandas date_range zu übergeben: pd.date_range(start_time, end_time, freq=value)?

Wenn nicht, wie ist es möglich, diesen Wert zu konvertieren, um es im date_range zu übergeben? Ich versuchte value.astype('str'), aber es gibt '0:30:00' zurück, das auch nicht als Argument für den pd.date_range geeignet ist.

+0

Warum -1? Wie ist das eine schlimme Frage? Alle Feedbacks geschätzt. –

Antwort

5

Sie können es in ein Timedelta konvertieren und es in freq übergeben.

>>> pd.date_range('20160101', '20170101', freq=pd.Timedelta(value)) 
DatetimeIndex(['2016-01-01 00:00:00', '2016-01-01 00:30:00', 
       '2016-01-01 01:00:00', '2016-01-01 01:30:00', 
       '2016-01-01 02:00:00', '2016-01-01 02:30:00', 
       '2016-01-01 03:00:00', '2016-01-01 03:30:00', 
       '2016-01-01 04:00:00', '2016-01-01 04:30:00', 
       ... 
       '2016-12-31 19:30:00', '2016-12-31 20:00:00', 
       '2016-12-31 20:30:00', '2016-12-31 21:00:00', 
       '2016-12-31 21:30:00', '2016-12-31 22:00:00', 
       '2016-12-31 22:30:00', '2016-12-31 23:00:00', 
       '2016-12-31 23:30:00', '2017-01-01 00:00:00'], 
       dtype='datetime64[ns]', length=17569, freq='30T') 

Ich denke, ältere Versionen von pandas nicht das hat unterstützen, konnte aber nach wie vor eine Frequenz Zeichenfolge verwenden:

pd.date_range('20160101', '20170101', freq='30min') 
1

Da Sie mit einem numpy.timedelta64 beginnen, fragte ich mich, wie np.arange diese behandelt.

Mit datetime64 Start- und Stopp-Werte arange Griffe diese schön:

In [847]: x=np.arange(np.datetime64('2016-01-01'), np.datetime64('2017-01-01'),value) 
In [848]: x 
Out[848]: 
array(['2016-01-01T00:00', '2016-01-01T00:30', '2016-01-01T01:00', ..., 
     '2016-12-31T22:30', '2016-12-31T23:00', '2016-12-31T23:30'], dtype='datetime64[m]') 

und DatetimeIndex nimmt ein solches Array:

In [849]: pd.DatetimeIndex(x) 
Out[849]: 
DatetimeIndex(['2016-01-01 00:00:00', '2016-01-01 00:30:00', 
       '2016-01-01 01:00:00', '2016-01-01 01:30:00', 
       '2016-01-01 02:00:00', '2016-01-01 02:30:00', 
       '2016-01-01 03:00:00', '2016-01-01 03:30:00', 
       '2016-01-01 04:00:00', '2016-01-01 04:30:00', 
       ... 
       '2016-12-31 19:00:00', '2016-12-31 19:30:00', 
       '2016-12-31 20:00:00', '2016-12-31 20:30:00', 
       '2016-12-31 21:00:00', '2016-12-31 21:30:00', 
       '2016-12-31 22:00:00', '2016-12-31 22:30:00', 
       '2016-12-31 23:00:00', '2016-12-31 23:30:00'], 
       dtype='datetime64[ns]', length=17568, freq=None) 
Verwandte Themen