У меня проблема с объединением столбцов день-месяц-год для формирования столбца даты во фрейме данных с использованием pd.to_datetime.Ниже приводится датафрейм, над которым я работаю, и столбцы Yr, Mo, Dy обозначают год, месяц, день.
data = pd.read_table("/ALabs/wind.data",sep = ',')
Yr Mo Dy RPT VAL ROS KIL
61 1 1 15.04 14.96 13.17 9.29
61 1 2 14.71 NaN 10.83 6.50
61 1 3 18.50 16.88 12.33 10.13
Итак, я попробовал приведенный ниже код и получаю следующую ошибку:для ассемблерных сопоставлений необходимо указать хотя бы [год, месяц, день]: [день, месяц, год] отсутствует "
Шаг 1:
data['Date'] = pd.to_datetime(data[['Yr','Mo','Dy']],format="%y-%m-%d")
Далее я попытался преобразоватьYr, Mo, Dy тип данных столбца для datetime64 от int64 и присвоение результата новым столбцам год, месяц, день.Теперь, когда я пытаюсь объединить столбцы, я получаю правильный формат даты в новом столбце даты, и я понятия не имею, как я получил желаемый результат.
Шаг 2:
data['Year'] = pd.to_datetime(data.Yr,format='%y').dt.year
data['Month'] = pd.to_datetime(data.Mo,format='%m').dt.month
data['Day'] = pd.to_datetime(data.Dy,format ='%d').dt.day
data['Date'] =pd.to_datetime(data[['Year','Month','Day']])
Результат:
Yr Mo Dy Year Month Day Date
61 1 1 2061 1 1 2061-01-01
61 1 2 2061 1 2 2061-01-02
61 1 3 2061 1 3 2061-01-03
61 1 4 2061 1 4 2061-01-04
Но если я попробую сделать тот же метод, изменив имена столбцов с года, месяца, дня на Yy, Mh, Di, как показано в приведенном ниже коде.Я получаю ту же ошибку: «для сборки отображений требуется указать хотя бы [год, месяц, день]: [день, месяц, год] отсутствует»
Step3:
data['Yy'] = pd.to_datetime(data.Yr,format='%y').dt.year
data['Mh'] = pd.to_datetime(data.Mo,format='%m').dt.month
data['Di'] = pd.to_datetime(data.Dy,format ='%d').dt.day
data['Date'] =pd.to_datetime(data[['Yy','Mh','Di']])
Что я хочу знать:
1) Обязательно ли для имен аргументов указывать «Год», «Месяц», «День», если мы используем pd.to_datetime?
2) Есть ли другой способ объединить столбцы в кадре данных для формирования даты, вместо использования этого длинного метода?
3) Эта ошибка характерна только для Python версии 3.7 ??
4) где я ошибся на шаге 1 и шаге 3, и почему я получаю o / p, когда следую за шагом 2?