#python #pandas #dataframe #datetime
#python #панды #фрейм данных #дата и время
Вопрос:
Итак, я выбрал 3 столбца из своего фрейма данных, чтобы создать временной ряд, который я мог бы затем построить:
booking_date = pd.DataFrame({'day': hotel_bookings_cleaned["arrival_date_day_of_month"],
'month': hotel_bookings_cleaned["arrival_date_month"],
'year': hotel_bookings_cleaned["arrival_date_year"]})
и результат выглядит так:
day month year
0 1 July 2015
1 1 July 2015
2 1 July 2015
3 1 July 2015
4 1 July 2015
Я попытался использовать
dates = pd.to_datetime(booking_date)
но получил сообщение об ошибке
ValueError: Unable to parse string "July" at position 0
Я предполагаю, что мне нужно преобразовать столбец месяца в числовое значение, прежде чем я смогу преобразовать его в datetime, но я не смог заставить работать какие-либо анализаторы.
Комментарии:
1. но я не смог заставить работать какие-либо анализаторы. Можете ли вы поделиться соответствующим кодом?
Ответ №1:
Попробуйте это
dates = pd.to_datetime(booking_date.astype(str).agg('-'.join, axis=1), format='%d-%B-%Y')
Out[13]:
0 2015-07-01
1 2015-07-01
2 2015-07-01
3 2015-07-01
4 2015-07-01
dtype: datetime64[ns]
Ответ №2:
Не уверен, что это более эффективно, чем предыдущий ответ, но вы можете преобразовать свой столбец string в целые числа с сопоставлением словаря, чтобы соответствовать формату, который pandas ожидает в to_datetime()
month_map = {
'January':1,
'February':2,
'March':3,
'April':4,
'May':5,
'June':6,
'July':7,
'August':8,
'September':9,
'October':10,
'November':11,
'December':12
}
dates = pd.DataFrame({
'day':booking_date.day,
'month':booking_date.month.apply(lambda x: month_map[x]),
'year':booking_date.year
})
ts = pd.to_datetime(dates)