我无法将 csv 文件中的日期信息解析为 ipython
Posted
技术标签:
【中文标题】我无法将 csv 文件中的日期信息解析为 ipython【英文标题】:I am unable parse date info from a csv file into ipython 【发布时间】:2017-05-18 09:15:02 【问题描述】:我正在运行 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 的新程序员,如果有任何帮助,我将不胜感激。
【问题讨论】:
【参考方案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
【讨论】:
【参考方案2】:我认为导致该错误的只是字符串周围的双引号。尝试使用 .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
【讨论】:
【参考方案3】:感谢两位的意见。根据您的回答,我修改了 csv 文件以删除日期条目周围的引号,然后一切正常!我很困惑,因为我之前在类似的数据上使用过 read_csv 方法,如下所示: "12/31/2016","The UPS Store","THE UPS STORE 031","10.74","debit","Business Services","Interest Checking","",""
“2016 年 12 月 31 日”,“东湾临终关怀医院”,“东湾临终关怀医院”,“14.00”,“借方”,“克拉拉”,“利息查询”,“”,“”
并且没有任何问题——事实上我根本不需要解析数据并且读者能够正确识别日期。哼!我想真正的问题是日期以非常规格式存储。无论如何,我有答案,谢谢你们的回答。
【讨论】:
以上是关于我无法将 csv 文件中的日期信息解析为 ipython的主要内容,如果未能解决你的问题,请参考以下文章
无法将正则表达式模式表单文件解析为 powershell 中的变量
Python Pandas read_csv 函数不允许将解析日期更改为所需格式
pandas使用read_csv函数读取csv数据设置parse_dates参数将csv数据中的指定字段数据列解析为时间日期对象