2015-02-13 3 views
0

Im в настоящее время работает над проектом в Python (модуль Pandas). То, что я хочу сделать, это разделить date_range на равные интервалы.Python Pandas, есть ли способ разделить date_range на равные интервалы?

import pandas as pd 
startdate='2014-08-08' 
enddate='2014-08-11' 
n=3 
pd.date_range(start=startdate,end=enddate) 

То, что я хотел бы каким-то образом для того, чтобы вернуть промежуточные даты в виде строки, например:

startdate='2014-08-08' 
intermediate_1='2014-08-09' 
intermediate_2='2014-08-10' 
enddate='2014-08-11' 

Это пример с дней, но я хотел бы быть в состоянии сделать то же самое в течение нескольких часов или минут. Есть ли способ сделать это в текущем модуле Pandas? Любая помощь будет принята с благодарностью.

С уважением, Alex

ответ

0

Вы можете использовать np.split, чтобы разделить ваш массив, это возвращает массив datetimeindex значений, поэтому мы должны получить доступ к элементу значения с помощью [0] мы можем назвать атрибут date() и брось к Силе :

In [238]: 

startdate='2014-08-08' 
enddate='2014-08-11' 
n=3 
d = pd.date_range(start=startdate,end=enddate) 
d 
Out[238]: 
<class 'pandas.tseries.index.DatetimeIndex'> 
[2014-08-08, ..., 2014-08-11] 
Length: 4, Freq: D, Timezone: None 
In [249]: 
# split to produce n-1 blocks 
splits = np.split(d, n-1) 
# show the contents 
for t in splits: 
    print(t) 
# assign each element, then access the value using [0] and access the date attribute and cast to str 
intermediate_1 = str(splits[0][0].date()) 
intermediate_2 = str(splits[-1][0].date()) 
# show intermediate_1 which shows it is a str representation of the date 
intermediate_1 
<class 'pandas.tseries.index.DatetimeIndex'> 
[2014-08-08, 2014-08-09] 
Length: 2, Freq: D, Timezone: None 
<class 'pandas.tseries.index.DatetimeIndex'> 
[2014-08-10, 2014-08-11] 
Length: 2, Freq: D, Timezone: None 
Out[249]: 
'2014-08-08' 
+0

Это похоже на работу в течение 3-х дней, но и любая другая Numer дней я стараюсь, я получаю ошибку: ValueError: сплит массива не приводит в равном делении Также, и знает, как я могу разделить в день, скажем, 12 интервалов? – Alex

+0

@Alex вам нужно изменить второй параметр на 'np.split', вы не указали, что вам нужно для расколов равного размера, но это не так сложно установить – EdChum

+0

@Alex вам придется перепрограммировать индекс на часы или минут, а затем передать 12 в качестве второго параметра в 'np.split' – EdChum

Смежные вопросы