Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中将列表字符串列表转换为日期以进行时间序列建模- 我的要求是在一定范围内考虑数据点。_Python_List - Fatal编程技术网

在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'