https://github.com/andruhon/moment-weekday-calc плагин для momentJS может быть полезен для подобных задач
Он не решает точной проблемы, но он может вычислять конкретные дни недели в диапазоне.
Использование:
moment().isoWeekdayCalc({
rangeStart: '1 Apr 2015',
rangeEnd: '31 Mar 2016',
weekdays: [1,2,3,4,5], //weekdays Mon to Fri
exclusions: ['6 Apr 2015','7 Apr 2015'] //public holidays
}) //returns 260 (260 workdays excluding two public holidays)
Как сказал @pault, вы не можете использовать сравнение (! =) Здесь, потому что index является именованным аргументом. Я хотел бы создать список всех индексов, например:
indices = list(range(0, 200))
, а затем удалить те, которые вы хотите сохранить:
for x in [128, 133, 140, 143, 199]:
indices.remove(x)
. Теперь у вас есть список все индексы, которые вы хотите удалить:
dropped_data = dataset.drop(index=indices)
Чтобы объяснить причину вашего исключения, выражение
index != [128, 133, 140, 143, 199]
оценивается как условное выражение, а не обрабатывается index
как ключевой аргумент. Python ищет переменную index
для сравнения со списком. Поскольку index
не определено, вы видите NameError
.
Используйте Index.difference
, чтобы исправить решение drop
:
dataset.drop(index=df.index.difference([128, 133, 140, 143, 199]))
Или, что еще более идиотски, вы должны использовать loc
- , выбрать , если у вас есть положительные ярлыки.
dataset.loc[[128, 133, 140, 143, 199]]
# If they are indexes,
# dataset.iloc[[128, 133, 140, 143, 199]]