我正在运行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的新程序员,非常感谢任何帮助。
答案 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('"')
示例:强>
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","兴趣检查","",""
并且没有问题 - 实际上我根本不需要解析数据,读者能够正确识别日期。咦!我想真正的问题是日期是以非常规格式存储的。在任何情况下,我都有答案,并感谢你们的答案。