首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >date_parser: TypeError: TypeError()接受一个位置参数,但给出了2个位置参数

date_parser: TypeError: TypeError()接受一个位置参数,但给出了2个位置参数
EN

Stack Overflow用户
提问于 2020-05-27 06:01:23
回答 2查看 1.1K关注 0票数 0

我有以下错误:

代码语言:javascript
运行
复制
TypeError: parse() takes 1 positional argument but 2 were given

我试图做一个基本的数据准备,我想将日期时间信息解析为熊猫DataFrame索引(将“日期”和“时间”列合并到一个列中)。这是代码的一个片段:

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

原来的日期和时间是这样的:

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

我偶然发现了另一种使用方法:

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

我在想你们能不能帮我解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-28 00:28:22

经过几次尝试和错误之后,我终于解决了这个问题。我用的是pd.to_datetime而不是datetime.strptime。

代码语言:javascript
运行
复制
from pandas import read_csv
from datetime import datetime
import pandas as pd
def parse(d, t):
    dt = d+ " " +t
    return pd.to_datetime(dt)

dataset = read_csv("dataset.csv", header=0, parse_dates={'datetime': ['date', 'time']},
                   index_col=0, date_parser= parse)

产出:

代码语言:javascript
运行
复制
datetime
2017-04-25 19:19:40
2017-04-25 19:19:40
2017-04-25 19:19:45
2017-04-25 19:19:45

我双重检查了“日期”和“时间”的数据类型,它们是数据类型“object”。我不确定此方法是否与其他数据类型(如字符串)一起工作,但它解决了我的问题。

感谢大家的参与。

票数 1
EN

Stack Overflow用户

发布于 2020-05-27 06:28:00

您会得到此错误,因为您已经选择了两列,而日期解析器正在等待一个值。

如果要手动解析时间戳,则必须使用以下示例:

代码语言:javascript
运行
复制
def parse(x, y):
    return datetime.strptime(f"{x} {y}", "%d-%b-%y %H:%M:%S")

dataset = read_csv("dataset.csv", header=0, parse_dates = [["date", "time"]],
                   index_col=0, date_parser=parse)

dataset

                     Unnamed: 0
date_time                      
2017-04-25 19:19:40           0
2017-04-25 19:19:40           1
2017-04-25 19:19:40           2
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62036425

复制
相关文章

相似问题

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