0

所以我从我的数据框中选择了 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

我假设我需要先将 Month 列转换为数值,然后才能将其转换为日期时间,但我无法使任何解析器工作。

4

2 回答 2

0

尝试这个

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]
于 2020-10-02T01:20:05.590 回答
0

不确定这是否比上一个答案更高效,但您可以使用字典映射将字符串列转换为整数,以适应 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)
于 2020-10-02T01:28:42.347 回答