2016-03-07 2 views
3

Почему этот цикл while никогда не останавливается?Хотя цикл не останавливается при переходе через даты

t = pd.to_datetime('2016.03.04') 
T = pd.to_datetime('2019.09.04') 
dates = T 

while dates > t: 

    dates = T- pd.DateOffset(years=1) 
    print(dates) 

Пожалуйста, помогите

+0

, потому что ваше условие всегда верно;) – MaxU

+1

изменить его на: 'date - = pd.DateOffset (years = 1)' – MaxU

+0

В качестве общего совета я бы рекомендовал не создавать переменные, которые отличаются только в случае ('t 'и' T'), так как это будет довольно запутанным для читателей (и * удобочитаемость). – Carpetsmoker

ответ

2

Проблема заключается в том, что вы не суммируя смещения.

Изменить эту строку:

dates = T - pd.DateOffset(years=1) 

к этому:

dates -= pd.DateOffset(years=1) 
2

Я предполагаю, что вы хотите сделать что-то вроде этого вместо зацикливания:

dates = pd.date_range('2016.03.04',periods=4,freq=pd.DateOffset(years=1)) 
print(dates) 

Выход:

DatetimeIndex(['2016-03-04', '2017-03-04', '2018-03-04', '2019-03-04'], dtype='datetime64[ns]', freq='<DateOffset: kwds={'years': 1}>') 
Смежные вопросы