【发布时间】:2021-09-29 22:35:11
【问题描述】:
我有一个作为字符串导入的日期列表。我尝试了很多不同的方法将其转换为日期列表。不管我怎么做,我都会出错。
#import valid dates from map file as list
valdts = dfmap.loc[row, 'valdata'].split(', ')
print(valdts)
>>
['1/1/1990', '6/6/1990', '7/4/1776']
#convert strings to dates
attempt1:
valdts = [d.strftime('%Y-%m-%d') for d in valdts]
>>
AttributeError: 'str' object has no attribute 'strftime'
attempt2:
a = [date_obj.strftime('%Y%m%d') for date_obj in valdts]
>>
AttributeError: 'str' object has no attribute 'strftime'
attempt3:
a = datetime.strptime(valdts, '%d %b %Y')
>>
TypeError: strptime() argument 1 must be str, not list
attempt4:
a = valdts.sort(key = lambda dt: datetime.strptime(dt, '%d %m %Y'))
>>
ValueError: time data '1/1/1990' does not match format '%d %m %Y'
attempt5:
for dt in valdts:
dt = dt.replace('/',',')
print(dt)
c = datetime.strptime('.'.join(str(i) for i in dt).zfill(8), "%Y.%m.%d")
>>
'1,1,1990'
ValueError: time data '1.,.1.,.1.9.9.0' does not match format '%Y.%m.%d'
attempt6:
for dt in valdts:
dt = dt.replace('/',',')
datetime.strptime(dt, '%d %m %Y')
>>
ValueError: time data '1,1,1990' does not match format '%d %m %Y'
我变得非常沮丧。上述不同方法是基于对其他人发布的类似但不完全相同的问题的回答。与我最相似的问题已被否决。我是在尝试做一些愚蠢的事情吗?非常感谢这里的一些帮助。谢谢。
注意:datetime.datetime 给我一个错误。 AttributeError: type object 'datetime.datetime' has no attribute 'datetime' 但只有 datetime 适用于我的代码的其他部分。
【问题讨论】:
-
能否提供数据样本?看起来您正在使用熊猫数据框/系列,因此使用(矢量化)熊猫方法可能会更好。
-
嗨,第 5 行提供了例如我试图转换为列表的数据。我已经创建了一个解决方法,在下面发布了一个答案,但是如果您有更好的方法使用矢量化 pandas 方法,我将不胜感激。
标签: datetime python-3.7