在python中将列表字符串列表转换为日期以进行时间序列建模- 我的要求是在一定范围内考虑数据点。
如下所示在python中将列表字符串列表转换为日期以进行时间序列建模- 我的要求是在一定范围内考虑数据点。,python,list,Python,List,如下所示 train_period = [ ['7-31-2013', '12-31-2014'], ['8-31-2013', '1-31-2015'], ['9-31-2013', '2-28-2015'], ['10-31-2013','3-31-2015'], ['11-31-2013', '4-30-2015'] ] 但当我不加引号地给出时,python将它们区分开来。所以我把它们作为字符串,但当使用下面的代码将字符串转换为日期时,我得到的错误是 "Type Error: strpt
train_period = [
['7-31-2013', '12-31-2014'],
['8-31-2013', '1-31-2015'],
['9-31-2013', '2-28-2015'],
['10-31-2013','3-31-2015'],
['11-31-2013', '4-30-2015']
]
但当我不加引号地给出时,python将它们区分开来。所以我把它们作为字符串,但当使用下面的代码将字符串转换为日期时,我得到的错误是
"Type Error: strptime() argument 1 must be str, not list"
DATE = [datetime.strptime(x,'%m/%d/%Y %H:%M') for x in train_period]
我知道这是因为清单的清单。请帮助解决问题。只需使用嵌套列表即可:
from datetime import datetime
train_period = [
['7-31-2013', '12-31-2014'],
['8-31-2013', '1-31-2015'],
['9-31-2013', '2-28-2015'],
['10-31-2013','3-31-2015'],
['11-31-2013', '4-30-2015']
]
DATE = [[datetime.strptime(y,'%m/%d/%Y %H:%M') for y in x] for x in train_period]
请注意,您的模式是错误的。尝试
%m-%d-&Y
。但是,您的数据包含9月31日和11月31日,因此您需要解决这一问题。根据您想要的结果,请使用这两个列表理解运算符中的任意一个:
- 第一个会给你一个列表
- 第二个会给你一个简单的列表
[[datetime.datetime(2013, 7, 31, 0, 0), datetime.datetime(2014, 12, 31, 0, 0)], [datetime.datetime(2013, 8, 31, 0, 0), datetime.datetime(2015, 1, 31, 0, 0)], [datetime.datetime(2013, 9, 30, 0, 0), datetime.datetime(2015, 2, 28, 0, 0)], [datetime.datetime(2013, 10, 31, 0, 0), datetime.datetime(2015, 3, 31, 0, 0)], [datetime.datetime(2013, 11, 30, 0, 0), datetime.datetime(2015, 4, 30, 0, 0)]]
====
[datetime.datetime(2013, 7, 31, 0, 0), datetime.datetime(2014, 12, 31, 0, 0), datetime.datetime(2013, 8, 31, 0, 0), datetime.datetime(2015, 1, 31, 0, 0), datetime.datetime(2013, 9, 30, 0, 0), datetime.datetime(2015, 2, 28, 0, 0), datetime.datetime(2013, 10, 31, 0, 0), datetime.datetime(2015, 3, 31, 0, 0), datetime.datetime(2013, 11, 30, 0, 0), datetime.datetime(2015, 4, 30, 0, 0)]
另外,您应该将时间戳的模式更改为%m-%d-%Y
,否则会出现一些错误,因为datetime无法解释字符串并生成日期对象
ValueError: time data '7-31-2013' does not match format '%m-%d-%Y %H:%M'
最后但并非最不重要的一点是,您的字符串必须是有效日期!!!(没有9月31日<代码>或11月31日<代码>)
ValueError: time data '7-31-2013' does not match format '%m-%d-%Y %H:%M'