我无法将 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的主要内容,如果未能解决你的问题,请参考以下文章

将 csv 文件中的日期字段读取到数据框中

无法将正则表达式模式表单文件解析为 powershell 中的变量

Python Pandas read_csv 函数不允许将解析日期更改为所需格式

pandas使用read_csv函数读取csv数据设置parse_dates参数将csv数据中的指定字段数据列解析为时间日期对象

用于将日期和时间列转换为 .csv 中的 unix 时间戳的 Bash 脚本

如何将 Excel 中的日期转换为 ISO 8601 格式