Следующая последовательность представляет собой экстракт из панд DataFrame, что у меня есть:Панды DataFrame: Удалить конкретную дату во всех високосных
>>> df_t
value
2011-01-31 -5.575000
2011-03-31 7.700000
2011-05-31 15.966667
2011-07-31 10.683333
2011-08-31 10.454167
2011-10-31 9.320833
2011-12-31 -0.358333
2012-01-31 -11.550000
2012-03-31 1.700000
2012-05-31 12.333333
2012-07-31 12.816667
2012-08-31 11.837500
2012-10-31 2.733333
2012-12-31 4.075000
2013-01-31 2.450000
2013-03-31 -4.262500
2013-05-31 11.491667
2013-07-31 14.812500
2013-08-31 13.920833
2013-10-31 4.125000
2013-12-31 0.075000
Как я могу удалить 31 марта в каждом високосном году? я пытался что-то вроде:
def isleap(year):
return year % 4 == 0 and (year % 100 != 0 or year % 400 == 0)
if isleap(df_t.index.year):
df_t=df_t[df_t.index.dayofyear!=91]
... но, очевидно, это было слишком просто в моей голове. Это единственное решение для циклического прохождения всего кадра данных и проверки на каждом шаге, если год является високосным годом, а дата - 91-й день года или доступно ли более простое решение?
EDIT: Проблема заключается не в том, как определить, является ли год високосным годом, но если да, то удалить 31 марта в вышеуказанном фреймворке.
К сожалению, если ваши даты даты и времени уже можно не только сделать 'df_t [(df_t.index.month == 3) и (df_t.index.day == 31)]' – EdChum
Спасибо за Ваш комментарий! Конечно, но использование этого кода в отрицательной форме удалит 31 марта в * каждый * год ... – user3017048
Нет, идея заключается в том, что вы фильтруете только эти даты, а затем определяете, является ли это високосным годом или нет, а затем удалите их – EdChum