我一直在使用
pd.read_csv('file.csv',parse_dates=['date_time'])
解析日期,然后运行DateTimeIndex从date_time变量读取年,月,日。正确完成后,'date_time'应格式化为datetime64。但是在数据列中有一些东西我继续将'object'作为变量格式,所以当DateTimeIndex它时我收到ValueError。我的数据太大,无法找出究竟发生了什么。我应该如何处理这个问题,以便我可以将异常更改为缺失并解析data_time变量?感谢。
更新
我做了Edchum的建议,除了手动。这是我的猜测为什么数据不合适:一个日期应该是2016而不是它显示2161.有谁知道为什么python不会在这种情况下解析日期时间?如何识别与此类似的所有行并删除所有行?
答案 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))