Как я могу преобразовать этот формат даты и времени в дату и время? - PullRequest
0 голосов
/ 13 апреля 2019

Мне нужно преобразовать определенный формат даты и времени в datetime, прочитав файл .csv. Значения находятся в столбцах «Date_start» и «Date_end». Файл имеет ~ 8760 строк, но исходный формат даты - "дд / мм / гггг чч: мм", но где-то вдоль данных он меняется на "дд-мм-гггг чч: мм".

Я перепробовал почти все. pd.to_datetime продолжает запрашивать отображение. новые столбцы на основе d.time и d.date удаляют даты последнего формата из-за '-'.

df17_raw.head()
Out[4]: 
      Date_start       Date_end    ...      Total_Ah   Power_kW
0  1/1/2017 0:00  1/1/2017 1:00    ...       392.340  74.897706
1  1/1/2017 1:00  1/1/2017 2:00    ...       393.785  75.173556
2  1/1/2017 2:00  1/1/2017 3:00    ...       388.728  74.208175
3  1/1/2017 3:00  1/1/2017 4:00    ...       386.254  73.735889
4  1/1/2017 4:00  1/1/2017 5:00    ...       393.412  75.102351

[5 rows x 8 columns]

df17_raw.tail()
Out[5]: 
            Date_start          Date_end    ...      Total_Ah   Power_kW
8755  31-12-2017 19:00  31-12-2017 20:00    ...       336.877  64.309819
8756  31-12-2017 20:00  31-12-2017 21:00    ...       327.410  62.502569
8757  31-12-2017 21:00  31-12-2017 22:00    ...       320.638  61.209794
8758  31-12-2017 22:00  31-12-2017 23:00    ...       310.967  59.363600
8759  31-12-2017 23:00     1/1/2018 0:00    ...       306.867  58.580910

[5 rows x 8 columns]

1 Ответ

1 голос
/ 13 апреля 2019

Вы можете заменить косую черту (/) дефисом (-), а затем преобразовать в datetime как обычно,

pd.to_datetime(df['Date_end'].str.replace('/', '-'), errors='coerce')

8755   2017-12-31 20:00:00
8756   2017-12-31 21:00:00
8757   2017-12-31 22:00:00
8758   2017-12-31 23:00:00
8759   2018-01-01 00:00:00
Name: Date_end, dtype: datetime64[ns]

Или наоборот (дефисы в слэш fwd).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...