python datetime转换,日期可能包含空格

python datetime转换,日期可能包含空格,python,pandas,date,datetime,Python,Pandas,Date,Datetime,我有一个带有日期列的.csv文件,日期如下所示 date 2016年 4月 1日 <-- there are whitespaces in thie row ... 2016年10月10日 有一个问题,.csv中的日期列在月/日为一位数时可能包含空格。当有空白时,我的代码就不能正常工作 有人提出解决方案吗?如果存在矢量化解决方案,熊猫中最好避免列表理解,因为性能和无支持问题 我认为需要由\s+:一个或多个空白,用于转换为datetimes和last for dates添加: 性能:

我有一个带有日期列的.csv文件,日期如下所示

date
2016年 4月 1日   <-- there are whitespaces in thie row
...
2016年10月10日
有一个问题,.csv中的日期列在月/日为一位数时可能包含空格。当有空白时,我的代码就不能正常工作


有人提出解决方案吗?

如果存在矢量化解决方案,熊猫中最好避免列表理解,因为性能和无支持问题

我认为需要由\s+:一个或多个空白,用于转换为datetimes和last for dates添加:

性能:

绘图是通过以下方式创建的:


实际上我不知道Python,但是如果用d.replace替换strtime中的d,是否可以实现这个技巧

data['date'] = [datetime.datetime.strptime(d, '%Y年%m月%d日').date() for d in data['date']]
data['date'] = (pd.to_datetime(data['date'].str.replace('\s+', ''), format='%Y年%m月%d日')
                  .dt.date)
def list_compr(df):
    df['date1'] = [datetime.datetime.strptime(d.replace(" ", ""), '%Y年%m月%d日').date() for d in df['date']]
    return df

def vector(df):
    df['date2'] = (pd.to_datetime(df['date'].str.replace('\s+', ''), format='%Y年%m月%d日').dt.date)
    return df

def make_df(n):
    df = pd.DataFrame({'date':['2016年 4月 1日','2016年10月10日']}) 
    df = pd.concat([df] * n, ignore_index=True)
    return df

perfplot.show(
    setup=make_df,
    kernels=[list_compr, vector],
    n_range=[2**k for k in range(2, 13)],
    logx=True,
    logy=True,
    equality_check=False,  # rows may appear in different order
    xlabel='len(df)')