我无法将csv文件中的日期信息解析为ipython

时间:2017-01-04 06:44:05

标签: date csv parsing pandas ipython

我正在运行python 3.5,我已经导入了pandas。我的csv文件(payinfo.csv)看起来像:

"01 DEC",1234.45,2344,11,1212.66 

"01 NOV", 9898.33, 2343,12,1009.33

当我运行以下内容时:

dateparse = lambda x: pd.datetime.strptime(x,"%d %b")
pay_data = pd.read_csv('payinfo.csv', parse_dates = ['Date'], date_parse

我总是得到

  

" ValueError:时间数据'“01 DEC”'格式不匹配'%d%b'

我是python的新程序员,非常感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

您尚未在问题中包含标题。但这有效:

import io
import pandas as pd

a = io.StringIO(u""""01 DEC",1234.45,2344,11,1212.66 

"01 NOV", 9898.33, 2343,12,1009.33""")

dateparse = lambda x: pd.datetime.strptime(x,"%d %b")
df = pd.read_csv(a,header=None, parse_dates=[0], date_parser=dateparse)
print df

您可以在将自定义年份转换为日期时间之前将其附加到x .strptime(year + x,"%Y%d %b") 输出:

           0        1     2   3        4
0 1900-12-01  1234.45  2344  11  1212.66
1 1900-11-01  9898.33  2343  12  1009.33

答案 1 :(得分:1)

我认为只是字符串周围的双引号导致了这个错误。尝试使用.strip('"')

剥离任何硬编码(不是'python generated')单引号或双引号

示例:

a = '"01 DEC"'
# Gives error
#a = pd.datetime.strptime(a,"%d %b")

# string without unneccessary quote marks
a = pd.datetime.strptime(a.strip('"'),"%d %b")
print a

输出:

1900-12-01 00:00:00

答案 2 :(得分:0)

感谢您的投入。从你的答案我修改了csv文件删除日期条目周围的引号,然后一切正常!我很困惑,因为我之前使用过read_csv方法看起来像这样的类似数据: " 12/31/2016"," UPS商店"," UPS商店031"," 10.74","借记","商业服务","兴趣检查","",""

" 12/31/2016","东湾临终关怀","东方医院"," 14.00" ," debit"," Clara","兴趣检查","",""

并且没有问题 - 实际上我根本不需要解析数据,读者能够正确识别日期。咦!我想真正的问题是日期是以非常规格式存储的。在任何情况下,我都有答案,并感谢你们的答案。