如何将字符串转换为日期 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 将字符串日期转换为列中所有值的数字