Проблема возникает при открытии файла CSV в Excel. Excel по умолчанию (и в зависимости от настроек вашей ОС) автоматически меняет формат даты. Например, в США формат по умолчанию - ММ / ДД / ГГГГ, поэтому если у вас есть дата в CSV-файле, например, ГГГГ-ММ-ДД, она автоматически изменит ее на ММ / ДД / ГГГГ.
Решение НЕ открывать файл csv в Excel, прежде чем манипулировать им в Python. ЕСЛИ вам нужно открыть его, чтобы проверить, посмотрите ли вы в Python, в блокноте или в другом текстовом редакторе.
Я всегда предполагаю, что даты будут испорчены, потому что кто-то мог открыть их в Excel и поэтому я проверяю правильный формат, а затем меняю его, если получаю ошибку AssertionError.
В качестве примера, если вы хотите изменить даты с YYYY-MM-DD, попробуйте следующее:
from datetime import datetime
def change_dates(date_string):
try:
assert datetime.strptime(date_string, '%m/%d/%y'), 'format error'
return date_string
except AssertionError, ValueError:
dt = datetime.strptime(date_string, '%Y-%m-%d')
return dt.strftime('%m/%d/%Y')