从csv文件读取时,Python无法解析日期

时间:2016-06-07 19:54:45

标签: python pandas

我一直在使用

pd.read_csv('file.csv',parse_dates=['date_time']) 

解析日期,然后运行DateTimeIndex从date_time变量读取年,月,日。正确完成后,'date_time'应格式化为datetime64。但是在数据列中有一些东西我继续将'object'作为变量格式,所以当DateTimeIndex它时我收到ValueError。我的数据太大,无法找出究竟发生了什么。我应该如何处理这个问题,以便我可以将异常更改为缺失并解析data_time变量?感谢。

更新

我做了Edchum的建议,除了手动。这是我的猜测为什么数据不合适:一个日期应该是2016而不是它显示2161.有谁知道为什么python不会在这种情况下解析日期时间?如何识别与此类似的所有行并删除所有行?

2 个答案:

答案 0 :(得分:2)

试试这个:

import pandas as pd 
df = pd.read_csv('test.csv.gz', compression='infer',date_parser=True, usecols=([0,1,3]))
print df.head()

#       id            date_time  posa_continent
#    0   0  2015-09-03 17:09:54               3
#    1   1  2015-09-24 17:38:35               3
#    2   2  2015-06-07 15:53:02               3
#    3   3  2015-09-14 14:49:10               3
#    4   4  2015-07-17 09:32:04               3

答案 1 :(得分:1)

这有助于您诊断问题。请运行此代码段并发布bad_rows

的输出
df = pd.read_csv('file.csv')
bad rows = []
good_rows = []
for row, date in enumerate(df['date_time']):
    try:
        good_rows.append((row,dateutil.parser.parse(date)))
    except Exception as e:
        print(str(e))
        bad_rows.append((row,date))