我有一个数据框,其中包含一些文本日期。我想在单独的列中返回日期:年、月和日。但为了做到这一点,我需要首先将文本(来自 Excel)转换为日期。
我现在的代码是
def convertdate(dstring):
dt = time.strptime(dstring, date_format='%Y-%m-%d')
return dt
但是它返回一个:TypeError:strptime()不接受关键字参数
然后用三个单独的函数来创建三个单独的列,一个代表年份,一个代表月份,一个代表日期。
一旦字符串是日期时间对象(dt),我相信代码是:return dt.year, return dt.month, return dt.day
。
我想要一个向我的数据框添加三列的函数,这可能吗?
最佳答案
将格式字符串作为位置参数传递。
>>> 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
关于python - 如何将字符串转换为日期 pandas python TypeError : strptime() takes no keyword arguments,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22138932/