Срез по дате/времени со значением шага

#python #pandas #slice

Вопрос:

У меня есть серия дат/времени:

 indices = pd.date_range(start='feb 01 2020', end='nov 30 2020', freq='D') sr=pd.Series(index=indices, data=np.random.randn(indices.shape[0]))  

Я могу извлекать по средам:

 selected = pd.date_range(start='march 01 2020', end='sept 30 2020', freq='W-WED') print(sr[selected].head())  
 2020-03-04 -0.378698 2020-03-11 1.616860 2020-03-18 -0.738064 2020-03-25 0.375743 2020-04-01 -0.233976 Freq: W-WED, dtype: float64  

Я просто хочу упростить срез в обычной форме [start:end:step] , но я не знаю, как это выразить step . Я делал различные попытки, например:

 sr['march 01 2020':'sept 30 2020':'W-WED']  
 'gt;=' not supported between instances of 'str' and 'int'  

Комментарии:

1. Вы не можете, но, предполагая, что у вас есть все дни, вы могли бы сделать: sr['march 04 2020':'sept 30 2020':7] (обратите внимание, что начало среза приходится на среду)?

2. Шаг должен быть целым числом.

3. Спасибо вам обоим @mozway и Bricam за то, что упомянули, что это невозможно. Поэтому, используя срез дат/времени, step=n просто выберите одну из n меток времени в срезе, независимо от их значений или их порядка.

4. Это правильно

Ответ №1:

Попробуй:

 sr[sr.index.dayofweek == 2]