Pandas to_datetime 解析格式奇怪的日期

Pandas to_datetime parsing for oddly formatted date

TL;DR:

如何使用 pd.to_datetime() 中的格式参数来解析格式为 'YYYY mmdd dd' 的日期?

背景:

我正在从 api 中提取一些数据,索引是日期,但格式为字符串。索引如下所示:

Index(['2020 0422 22', '2020 0423 23', '2020 0424 24', '2020 0427 27',
       '2020 0428 28'],
      dtype='object')

选项 1:

通常我会做类似 df.index = pd.to_datetime(df.index) 的事情,这通常会很有效。如果这不起作用,那么我将使用格式参数像这样 pd.to_datetime(format='%y/%m/%d) 进行解析,但是鉴于这一天包含两次,我不确定如何使用此参数。

选项 2:

我还可以使用字符串理解来创建一个新列表,将其转换为日期时间,然后将 df 的索引设置为等于该列表。像这样:

[ x.split(' ')[0] + x.split(' ')[1] for x in df.tail().index ]

[ x[0:-2] for x in df.tail().index ]

但是 none 这些选项看起来非常 pythonic

问题:

如何使用 pd.to_datetime() 中的格式参数来解析格式为 'YYYY mmdd dd' 的日期?

使用str.rsplit with n=1 and selecting first list and then pass to to_datetime:

idx = pd.Index(['2020 0422 22', '2020 0423 23', '2020 0424 24', '2020 0427 27',
       '2020 0428 28'])
df = pd.DataFrame(index = idx)

df.index = pd.to_datetime(df.index.str.rsplit(n=1).str[0], format='%Y %m%d')
print (df)

Empty DataFrame
Columns: []
Index: [2020-04-22 00:00:00, 2020-04-23 00:00:00, 
        2020-04-24 00:00:00, 2020-04-27 00:00:00, 
        2020-04-28 00:00:00]

顺便说一句,最直观的答案失败了:

df.index = pd.to_datetime(df.index, format='%Y %m%d %d')
print (df)

error: redefinition of group name 'd' as group 4; was group 3