【发布时间】:2020-09-14 02:22:55
【问题描述】:
我收到以下错误:
TypeError: parse() takes 1 positional argument but 2 were given
我正在尝试做一个基本的数据准备,我想将日期时间信息解析为 Panda DataFrame 索引(将“日期”和“时间”列组合在一个列中)。这是一个sn-p的代码:
from pandas import read_csv
from datetime import datetime
def parse(x):
return datetime.strptime(x,'%d-%b-%y %H:%M:%S' )
dataset = read_csv("dataset.csv", header=0, parse_dates = [['date', 'time']],
index_col=0, date_parser= parse)
这是原始日期和时间的样子:
date time
25-Apr-17 19:19:40
25-Apr-17 19:19:40
25-Apr-17 19:19:45
25-Apr-17 19:19:45
我遇到了另一种使用方式:
dataset = read_csv("dataset.csv", header=0, parse_dates = {'datetime':[1,2]},
index_col=0, date_parser=lambda x: datetime.strptime(x,'%d-%b-%y %H:%M:%S' )
但仍然是同样的问题。 TypeError: <lambda>() takes 1 positional argument but 2 were given
我想知道你们是否可以帮助我解决这个问题?
【问题讨论】:
-
这能回答你的问题吗? Can pandas automatically recognize dates?
-
顺便说一句,我认为您根本不需要指定 date_parser,pandas read_csv 会自行正确完成。如果您必须这样做,请使用
date_parser=lambda x, y: datetime.strptime(x+' '+y,'%d-%b-%y %H:%M:%S'))。您需要两个变量,因为您将两列传递给函数。 -
谢谢@MrFuppes,我看了看并使用了一些想法。仍然有一些错误,如
ValueError: unconverted data remains:。我用date_parser=lambda x, y: datetime.strptime(x+' '+y,'%d-%b-%y %H:%M:%S'),我得到了这个错误ValueError: time data ' 19:19:40 9' does not match format '%d-%b-%y %H:%M:%S' -
您是否检查了 .csv 中的“时间”列?它是否包含不规则格式,例如有时“19:19:40 9”?听起来我们在解析之前需要进行一些清理
-
我仔细检查了一下,看起来“9”来自数据集中的下一列,即时间列旁边。我使用了
delimiter=",",但它并没有解决问题。仍然有同样的错误。
标签: python-3.x datetime strptime dateparser