Python 拆分具有相似单元格日期的字符串

Python 拆分具有相似单元格日期的字符串,python,pandas,dataframe,date,Python,Pandas,Dataframe,Date,我有一个包含日期列的数据框。但日期列写为2017年第二季度。 我想将此更改为2017年4月1日。问题是每个单元格的日期字符串的结构不同。 所以我现在用的是: data = [{'date' : '2e kw 2017'},{'date' : '3ekw 2017'},{'date' : '4e kw 2017'} ] df = pd.DataFrame(data, columns =['date']) df[['kwartaal','jaar']] = df.date.str.split(

我有一个包含日期列的数据框。但日期列写为2017年第二季度。 我想将此更改为2017年4月1日。问题是每个单元格的日期字符串的结构不同。 所以我现在用的是:

data = [{'date' : '2e kw 2017'},{'date' : '3ekw 2017'},{'date' : '4e kw 2017'} ]

df = pd.DataFrame(data, columns =['date']) 

df[['kwartaal','jaar']] = df.date.str.split(" kw ",expand=True) 

df['kwartaal'] = df['kwartaal'].replace(['2e'],'4-1-')
df['kwartaal'] = df['kwartaal'].replace(['3e'],'7-1-')
df['kwartaal'] = df['kwartaal'].replace(['4e'],'10-1-')

df['date'] = pd.to_datetime(df['kwartaal'] + df['jaar'])
这给了我第二和第四季度想要的结果,但第三季度没有。最好的分割方法是什么

        date   kwartaal  jaar
0 2017-04-01       4-1-  2017
1        NaT  3ekw 2017  None
2 2017-10-01      10-1-  2017

让我们尝试用
Q
替换整个
ekw
组,并让Pandas处理转换:

df['date'] = pd.to_datetime(df['date'].str.replace('e\s*kw\s*','Q'))
输出:

        date
0 2017-04-01
1 2017-07-01
2 2017-10-01

尝试
df[['kwartal','jaar']]=df.date.str.split(“\s*kw\s*”,expand=True)
而不是在
kw
之前和之后强制空格。使用正则表达式怎么样:
(\d+[e])
?看起来不错。更好的一行解决方案。是的,效果很好,你能详细说明一下吗<代码>('e\s*kw\s*','Q'))部分我不太清楚haha@MartijnvanAmsterdam看一个解释。