nnnLik
@nnnLik
Capybara god

Как мне отфильтровать csv файл по датам?

У меня есть CSV-файл вида:
date              source  visits
2020-01-01 yandex 324
2020-01-01 google 344
2020-01-01 elama 532
2020-01-05 other 455
2020-01-05 google 65
2020-02-20 yandex 433
2020-03-20 elama 234

И есть другой CSV-файл в котором просто даты. Я хочу удалить строки из первого файла, чьи даты совпадают с датами во втором файле. То есть, если во втором файле есть дата 2020-01-01 то первые три строки из первого файла должны быть удалены и остаться, должна, вся остальная информация.
  • Вопрос задан
  • 127 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Xion, ну дай угадаю, перебирал с начала списка?
Пусть у нас есть список букв:a b b a b a a ....
Мы хотим убрать из него буквы b, и перебираем его с начала.
Текущая буква A: A b b a b a a ....
Ничего не делаем.
Переходим к следующей.
Текущая буква B: a B b a b a a ....
Удаляем, следующие элементы смещаются на позицию: a B a b a a ....
Переходим к следующей: a b A b a a ....
Как видишь, следующую букву b мы из-за этого пропустили.

Отсюда настоятельная рекомендация: избегай модифицировать коллекцию в процессе перебора! Лучше (реально лучше в случае с файлами) - генерируй по ходу перебора новую коллекцию, куда попадают только "хорошие" элементы. Вместо того, чтобы пытаться удалять "плохие" из уже существующей.

Если создавать копию данных очень нежелательно, перебирай от конца к началу - тогда сместятся только те элементы, которые мы УЖЕ обработали, и потому это не помешает. Но с файлами это делать очень неудобно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы