当我导入一些记录时,read_csv正确地将索引列作为日期时间读取。 但是如果记录数量超过几千,那么索引列似乎会自动更改为对象而不是时间。
import pandas as pd
myheader=['ticketId' , ... a lot of columns ... , 'serialNo']
users=pd.read_csv('ticketold_head.txt', sep='\t', header=None, names = myheader, parse_dates={'datetime1' : ["ticketDate", "ticketTime"]}, keep_date_col=True, index_col='datetime1')
In [36]: users.index
Out[36]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2011-04-06 10:48:49, ..., 2011-04-07 10:14:17]
Length: 10000, Freq: None, Timezone: None
如果记录太多,索引的类型将更改为object而不是datetime。
In [40]: users.index
Out[40]: Index([u'2011-04-06 10:48:49', u'2011-04-06 10:48:51',
...
...
u'2011-04-06 12:32:21', ...], dtype='object')
答案 0 :(得分:1)
当自定义解析器工作时,我认为更快的路径可能是在读取数据时不进行解析,设置索引就像这样。 coerce=True
强制错误值为NaT
df.index = pd.to_datetime(df["ticketDate"] + df["ticketTime"], coerce=True, format='%Y-%m-%d %H:%M:%S')
答案 1 :(得分:0)
需要一个功能来检查日期格式。将它与to_read一起用作date_parser = mydate
def mydate(x):
try:
return dt.datetime.strptime(x, '%Y-%m-%d %H:%M:%S')
except ValueError:
return pd.NaT