【发布时间】:2014-08-19 20:17:59
【问题描述】:
当我导入一些记录时,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
如果记录太多,则将索引类型更改为对象而不是日期时间。
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')
【问题讨论】:
-
您确定所有值都有效吗?如果你做
df.index = pd.to_datetime(df.index),它也会失败吗? -
即使使用了 to_datetime 方法,它仍然是对象而不是时间序列。这是否意味着我的日期无效?我怎么知道有多少无效日期?有没有办法删除这些记录?
-
您有无效的日期条目,您可以对数据进行二进制切割,找到行数,读取前半部分,然后读取第二部分,然后继续直到找到错误的行。或者您可以一次读取一行并存储无法转换的错误行。