#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]