我正在运行python3.5,我有进口熊猫。我的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的新程序员,希望得到任何帮助。
发布于 2017-01-04 07:45:40
我认为只是字符串周围的双引号导致了这个错误。尝试用.strip('"')去掉任何硬编码(不是“python生成的”)单引号或双引号。
示例:
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发布于 2017-01-04 07:06:21
您还没有在问题中包含标题。但这样做是可行的:
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在将自定义年份转换为datetime .strptime(year + x,"%Y%d %b")输出之前,可以将自定义年份附加到x:
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发布于 2017-01-04 16:24:09
谢谢你们两位的意见。从你的答案,我修改了csv文件,以删除引号左右的日期输入,然后一切顺利!我感到困惑,因为我以前对类似的数据使用过read_csv方法:“2016年12月31日”、“UPS商店”、“UPS商店031”、"10.74“、”借方“、”商业服务“、”利息检查“、”,“
“2016年12月31日”、“东湾临终关怀”、“东方临终关怀”、"14.00“、”借方“、”克拉拉“、”利息检查“、”、“
而且没有问题--事实上,我根本不需要解析数据,而且读者能够正确地识别日期。哈!我想真正的问题是日期是以一种非常规的格式存储的。无论如何,我有答案,谢谢你们的回答。
https://stackoverflow.com/questions/41457744
复制相似问题