如何将字符串转换为日期 pandas python TypeError:strptime() 不接受关键字参数

Posted

技术标签:

【中文标题】如何将字符串转换为日期 pandas python TypeError:strptime() 不接受关键字参数【英文标题】:how to convert string to date pandas python TypeError: strptime() takes no keyword arguments 【发布时间】:2014-04-04 00:56:01 【问题描述】:

我有一个数据框,其中包含一些文本日期。我想在单独的列中返回日期:年、月和日。但为了做到这一点,我需要先将文本(从 excel)转换为日期。

我现在的代码是

def convertdate(dstring):
    dt = time.strptime(dstring, date_format='%Y-%m-%d')
    return dt

但是它返回一个:TypeError: strptime() takes no keyword arguments

然后不是三个单独的函数来创建三个单独的列,一个代表年,一个代表月,一个代表日。

一旦字符串是日期时间对象(dt),我相信代码是:return dt.year, return dt.month, return dt.day

我想要一个向我的数据框添加三列的函数,这可能吗?

【问题讨论】:

【参考方案1】:

将格式字符串作为位置参数传递。

>>> import time
>>> def convertdate(dstring):
...     return time.strptime(dstring, '%Y-%m-%d')
...
>>> convertdate('2013-03-02')
time.struct_time(tm_year=2013, tm_mon=3, tm_mday=2, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=61, tm_isdst=-1)

顺便说一句,time.strptime 返回time.struct_time。它的属性以tm_为前缀。

最好你可以使用datetime.datetime.strptime:

>>> import datetime
>>> import pandas as pd
>>>
>>> def convertdate(dstring):
...     return datetime.datetime.strptime(dstring, '%Y-%m-%d')
...
>>> dt = convertdate('2013-03-02')
>>> dt
datetime.datetime(2013, 3, 2, 0, 0)
>>> pd.DataFrame(['year': dt.year, 'month': dt.month, 'day': dt.day])
   day  month  year
0    2      3  2013

【讨论】:

您好,谢谢,您的两个答案 time.strptime 和 datetime.datetime.strptime 有什么区别? @yoshiserry,他们返回不同的对象。 time.strptime 返回 time.struct_time 对象,而 datetime.datetime.strptime 返回 datetime 对象。它们有不同的属性。【参考方案2】:

Pandas 现在支持 pandas.to_datetime 将 str 转换为日期。 例如,从字符串 col 创建一个新的日期列:

import pandas as pd
df['My Date'] = pd.to_datetime(df['Date Str'], format='%Y-%m-%d')

拆分成数字:

df['My Year'] = df['My Date'].apply(lambda x: x.year)
df['My Month'] = df['My Date'].apply(lambda x: x.month)
df['My Day'] = df['My Date'].apply(lambda x: x.day)

要拆分成字符串列,请使用.dt.strftime,例如“Jan”这样的月份名称

df['Month'] = df['My Date'].dt.strftime('%b')

更多信息: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.to_datetime.html https://pandas.pydata.org/docs/reference/api/pandas.Series.dt.html

【讨论】:

以上是关于如何将字符串转换为日期 pandas python TypeError:strptime() 不接受关键字参数的主要内容,如果未能解决你的问题,请参考以下文章

将 JSON 时间戳字符串转换为 pandas 数据框中的 python 日期

如何在 pandas python 中将字符串转换为日期时间格式?

python 将字符串格式的日期(DD.MM.YYYY)转换为Pandas中的日期格式

使用 pandas python 将字符串日期转换为列中所有值的数字

如何将 Pandas 数据框中的字符串转换为“日期”数据类型?

将字符串日期时间转换为熊猫日期时间