我有一个带有日期列的.csv文件,日期如下所示。date2016年 4月 1日 <-- there are whitespaces in thie row...2016年10月10日日期格式为日文日期格式。我正在尝试将此列转换为“YYYY-m m-DD”,下面是我正在使用的python代码。data['date'] = [datetime.datetime.strptime(d, '%Y年%m月%d日').date() for d in data['date']]有一个问题,.csv中的日期列在月/日为一位数时可能包含空格。当有空格时,我的代码就不能正常工作。有什么解决办法吗? 最佳答案 在熊猫中,最好是避免列表理解,因为存在向量化的解决方案,因为性能和没有支持。我认为需要NaNbyreplace:一个或多个带\s+的空格用于转换为datetimes和last for dates addpandas.to_datetime:data['date'] = (pd.to_datetime(data['date'].str.replace('\s+', ''), format='%Y年%m月%d日') .dt.date)性能:这个情节是用perfplot创建的:def list_compr(df): df['date1'] = [datetime.datetime.strptime(d.replace(" ", ""), '%Y年%m月%d日').date() for d in df['date']] return dfdef vector(df): df['date2'] = (pd.to_datetime(df['date'].str.replace('\s+', ''), format='%Y年%m月%d日').dt.date) return dfdef make_df(n): df = pd.DataFrame({'date':['2016年 4月 1日','2016年10月10日']}) df = pd.concat([df] * n, ignore_index=True) return dfperfplot.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)')关于python - python datetime convert,日期可能包含空格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51345286/
10-17 01:03