Как преобразовать столбец часов / минут с разными цифрами в объекты datetime в python / pandas? - PullRequest
1 голос
/ 11 июля 2020

Я пытаюсь создать один столбец datetime на pandas из двух столбцов Dataframe, один из которых имеет дату, а другой - время.

Они имеют следующий формат:

Date       Time
20110101    53
20110102   253
20110103   653
20110104  1053

Я думал преобразовать их обе в строки, например:

df_shortened["datetime"] = df_shortened['date'].dt.strftime('%Y-%m-%d')  + " " + df_shortened['Time'].astype(str)

получить такие строки ...

0          2011-01-01 53
1         2011-01-01 153
2         2011-01-01 253
3         2011-01-01 353
4         2011-01-01 453

А затем попытаться преобразовать полученный столбец в такой объект datetime ...

df["dtcolumn"] = pd.to_datetime(df["dtcolumn"], format='%Y%m%d %H%M')

Что не сработало. Я предполагаю, что это из-за разного количества цифр, я не уверен.

ValueError: time data '2011-01-01 53' does not match format '%Y%m%d %H%M' (match)

Если я вызываю ошибки, он просто оставляет их как строку. Как мне это решить? Нужно ли мне добавлять более короткие числа? Как он отличает часы от минут?

1 Ответ

0 голосов
/ 11 июля 2020

Попробуйте это, используя zfill и манипуляции со строками:

df['datetime'] = pd.to_datetime(df['Date'].astype(str) + ' ' + 
                                df['Time'].astype(str).str.zfill(4), format='%Y%m%d %H%M')

Вывод:

       Date  Time            datetime
0  20110101    53 2011-01-01 00:53:00
1  20110102   253 2011-01-02 02:53:00
2  20110103   653 2011-01-03 06:53:00
3  20110104  1053 2011-01-04 10:53:00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...