首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我无法将csv文件中的日期信息解析为ipython。

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

Stack Overflow用户
提问于 2017-01-04 06:44:04
回答 3查看 159关注 0票数 2

我正在运行python3.5,我有进口熊猫。我的csv文件(payinfo.csv)看起来如下:

代码语言:javascript
复制
"01 DEC",1234.45,2344,11,1212.66 

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

当我运行以下命令时:

代码语言:javascript
复制
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的新程序员,希望得到任何帮助。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-01-04 07:45:40

我认为只是字符串周围的双引号导致了这个错误。尝试用.strip('"')去掉任何硬编码(不是“python生成的”)单引号或双引号。

示例:

代码语言:javascript
复制
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

输出:

代码语言:javascript
复制
1900-12-01 00:00:00
票数 1
EN

Stack Overflow用户

发布于 2017-01-04 07:06:21

您还没有在问题中包含标题。但这样做是可行的:

代码语言:javascript
复制
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:

代码语言:javascript
复制
           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
EN

Stack Overflow用户

发布于 2017-01-04 16:24:09

谢谢你们两位的意见。从你的答案,我修改了csv文件,以删除引号左右的日期输入,然后一切顺利!我感到困惑,因为我以前对类似的数据使用过read_csv方法:“2016年12月31日”、“UPS商店”、“UPS商店031”、"10.74“、”借方“、”商业服务“、”利息检查“、”,“

“2016年12月31日”、“东湾临终关怀”、“东方临终关怀”、"14.00“、”借方“、”克拉拉“、”利息检查“、”、“

而且没有问题--事实上,我根本不需要解析数据,而且读者能够正确地识别日期。哈!我想真正的问题是日期是以一种非常规的格式存储的。无论如何,我有答案,谢谢你们的回答。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41457744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档