"Bad directive" 转换为 Pandas 日期时间时出现值错误

"Bad directive" value error when converting to Pandas datetime

我有一个 Pandas 数据框 df,如下所示:

df = pd.DataFrame({'timestamp' : ['Wednesday, Apr 4/04/22 at 17:02',
                                  'Saturday, Apr 4/23/22 at 15:45'],
                        'foo' : [1, 2]
                       })

df
    timestamp                          foo
0   Wednesday, Apr 4/04/22 at 17:02    1
1   Saturday, Apr 4/23/22 at 15:45     2

我正在尝试将 timestamp 列转换为日期时间对象,以便我可以添加 day_of_week 列。

我的尝试:

df['timestamp'] = pd.to_datetime(df['timestamp'],
                                 format='%A, %b %-m/%-d/%y at %H:%M')
df['day_of_week'] = df['timestamp'].dt.day_name()

错误是:

ValueError: '-' is a bad directive in format '%A, %b %-m/%-d/%y at %H:%M'

如有任何帮助,我们将不胜感激。谢谢!

只使用没有-的格式:

df['timestamp'] = pd.to_datetime(df['timestamp'],
                                 format='%A, %b %m/%d/%y at %H:%M')
df['day_of_week'] = df['timestamp'].dt.day_name()

注意。 to_datetime 在提供的数据上非常灵活,请注意如何忽略不正确的星期几。

输出:

            timestamp  foo day_of_week
0 2022-04-04 17:02:00  1    Monday    
1 2022-04-23 15:45:00  2    Saturday