使用 pandas 读取“csv”文件时解析日期时间
Posted
技术标签:
【中文标题】使用 pandas 读取“csv”文件时解析日期时间【英文标题】:parse date-time while reading 'csv' file with pandas 【发布时间】:2016-12-15 10:29:15 【问题描述】:我在从 cvs 文件中读取数据时尝试解析日期。我使用的命令是
df = pd.read_csv('/Users/n....', names=names, parse_dates=['date']) )
它一般都在处理我的文件。
但是我有几个数据集,它们的日期格式多种多样。我的意思是它的日期格式类似于(09/20/15 09:59 )
,而其他行的另一种格式类似于同一文件中的( 2015-09-20 10:22:01.013 )
。而且我上面写的命令不适用于这些文件。当我删除 (parse_dates=['date'])时它正在工作,但那时我不能使用日期列作为 datetime
格式,它将该列读取为 integer 。如果有人能回答这个问题,我将不胜感激!
【问题讨论】:
尝试这样做:df = pd.read_csv('/Users/n....', names=names); df['date'] = pd.to_datetime(df['date'])
【参考方案1】:
像这样:
df = pd.read_csv(file, names=names)
df['date'] = pd.to_datetime(df['date'])
【讨论】:
【参考方案2】:Pandas read_csv
接受 date_parser
参数,您可以定义自己的日期解析函数。因此,例如,在您的情况下,您可以简单地执行 2 种不同的日期时间格式:
import datetime
def date_parser(d):
try:
d = datetime.datetime.strptime("format 1")
except ValueError:
try:
d = datetime.datetime.strptime("format 2")
except:
# both formats not match, do something about it
return d
df = pd.read_csv('/Users/n....',
names=names,
parse_dates=['date1', 'date2']),
date_parser=date_parser)
然后,您可以在这些列中以不同格式解析这些日期。
【讨论】:
以上是关于使用 pandas 读取“csv”文件时解析日期时间的主要内容,如果未能解决你的问题,请参考以下文章
读取 .csv 文件时在 Python 中解析日期的最快方法是啥?
pandas使用read_csv函数读取csv数据设置parse_dates参数将csv数据中的指定字段数据列解析为时间日期对象