Присоединяйтесь к колонкам для дат - PullRequest
1 голос
/ 22 февраля 2020

У меня есть следующий фрейм данных с информацией о дате:

      import numpy as np
      import pandas as pd

      df_Date = pd.DataFrame({'Day' : ['2', '19', '22', '15', '16'], 
                              'Month' : ['2', '8', '1', '11', '10'], 
                              'Year' : ['2010', '2010', '2010', '2010', '2010'], 
                              'Hour' : ['1', '2', '3', '4', '5'],
                              'Minute' : ['59', '55', '33', '45', '5'],
                              'Second' : ['16', '17', '18', '19', '20']                       
                             })

Я хотел бы создать только один столбец, содержащий полную дату (День, Месяц, Год, Час, Минута и Секунд).

Я пытался реализовать следующий код:

     df_Date['Day'] = df_Date['Day'].astype(int)
     df_Date['Month'] = df_Date['Month'].astype(int)
     df_Date['Year'] = df_Date['Year'].astype(int)

     df_Date['New_Column_Date'] = pd.to_datetime(df_Date.Year*10000 + df_Date.Month*100 + 
                                                 df_Date.Day, format='%Y%m%d')

Этот код работает. Тем не менее, он не завершен, часы, минуты и секунды отсутствуют.

Мой выход такой:

        Day   Month     Year    Hour    Minute  Second  New_Column_Date
         2      2       2010    1         59    16          2010-02-02
         19     8       2010    2         55    17          2010-08-19
         22     1       2010    3         33    18          2010-01-22
         15     11      2010    4         45    19          2010-11-15
         16     10      2010    5          5    20          2010-10-16

Я хотел бы, чтобы вывод был:

        Day   Month     Year    Hour    Minute  Second  New_Column_Date
         2      2       2010    1         59    16          2010-02-02 01:59:16
         19     8       2010    2         55    17          2010-08-19 02:55:17
         22     1       2010    3         33    18          2010-01-22 03:33:18
         15     11      2010    4         45    19          2010-11-15 04:45:19
         16     10      2010    5          5    20          2010-10-16 05:05:20

1 Ответ

1 голос
/ 22 февраля 2020

Пока ваши заголовки названы так, как показано в вашем сообщении, вы можете делегировать всю тяжелую работу на pd.to_datetime:

pd.to_datetime(df[['Year', 'Month', 'Day', 'Hour', 'Minute', 'Second']])

0   2010-02-02 01:59:16
1   2010-08-19 02:55:17
2   2010-01-22 03:33:18
3   2010-11-15 04:45:19
4   2010-10-16 05:05:20
dtype: datetime64[ns]

Условием является то, что вы называете свои столбцы "Год", " Месяц "," День ", ... et c, как показано выше. Порядок столбцов даже не так важен. Имена чрезвычайно важны.

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