从CSV导入格式错误转换日期时间

时间:2019-05-23 11:32:26

标签: python pandas dataframe datetime

我已经使用read_csv导入了CSV文件。我感兴趣的CSV列中的原始数据以如下格式记录日期:

19/01/2012  9:00:00 AM

但是,导入数据时,其显示为:

2005-03-21 10:30:00

不确定为什么会这样。最终,我对提取日期(19/01/2012)感兴趣,并用它来计算与该列中最早日期的天数差。 ....

df['date_column'] = (df['date_column'] - df['date_column'].min())

首先,我尝试了几件事:

df['date_column'] = pd.to_datetime(df['date_column'], dayfirst=True)

这将返回与上面所示相同的日期格式。即2005-03-21 10:30:00

第二次尝试是

df['date_column'] = pd.to_datetime(df['date_column'], format ='%d-%m-%y %I:%M:%S %p')

这给了我错误

  

ValueError:时间数据'2004-03-16 11:40:00'与格式'%d-%m-%y%I:%M:%S%p'(匹配)不匹配

我已经尝试了一些以上的细微变化。我正在使用运行Python 3.7.1的Jupyter v 5.7.4

一定会感谢您的任何建议/帮助!谢谢。

2 个答案:

答案 0 :(得分:0)

我认为orders.get(Product)中的read_csv列已转换为日期时间,因此不必转换为日期。

如果减去最小值,将获得timedelta,格式不同:

date_column

如果您使用原始格式的日期时间,请使用Series.dt.strftime

rng = pd.date_range('2017-04-03 15:12:10', periods=10, freq='23Min')
df = pd.DataFrame({'date_column': rng})  

df['diff'] = (df['date_column'] - df['date_column'].min())

答案 1 :(得分:0)

我认为只有将日期转换为日期才能计算出日差:

import datetime as dt

df['date_column'] = (df['date_column'] - df['date_column'].min()).dt.days