pandas.read_csv () может применять разные форматы даты в одном столбце! Это известная ошибка? Как это исправить? - PullRequest
2 голосов
/ 23 марта 2019

Я понял, что, если формат столбца даты не объявлен явно или почти явно (с указанием дня), панды могут применять разные форматы даты к одному и тому же столбцу при чтении файла CSV!Один ряд может быть дд / мм / гггг, а другой ряд в том же столбце мм / дд / гггг! Безумие даже близко не подходит к его описанию!Это известная ошибка?

Чтобы продемонстрировать: приведенный ниже скрипт создает очень простую таблицу с датами с 1 по 31 января в формате dd / mm / yyyy, сохраняет ее в файл csv, затемчитает csv.

Затем я использую pandas.DatetimeIndex для извлечения дня.Ну, день равен 1 для первых 12 дней (когда месяц и день были <13), а затем 13 14 и т. Д.Как же это возможно? </p>

Единственный способ, который я нашел, чтобы исправить это, это объявить формат даты, либо явно, либо просто с помощью dayfirst = True.Но это боль, потому что это означает, что я должен объявить формат даты, даже когда я импортирую csv с лучшими форматированными датами!Есть ли более простой способ?

Это происходит со мной с пандами 0.23.4 и Python 3.7.1 в Windows 10

import numpy as np
import pandas as pd
df=pd.DataFrame()
df['day'] =np.arange(1,32)
df['day']=df['day'].apply(lambda x: "{:0>2d}".format(x)  )
df['month']='01'
df['year']='2018'
df['date']=df['day']+'/'+df['month']+'/'+df['year']
df.to_csv('mydates.csv', index=False)

#same results whether you use parse_dates or not
imp = pd.read_csv('mydates.csv',parse_dates=['date'])
imp['day extracted']=pd.DatetimeIndex(imp['date']).day
print(imp['day extracted'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...