我正在分析.csv文件,我的第一列是日期时间,格式为“2016-09-15T00:00:13”,我想将此格式更改为标准python datetime对象。我可以更改一个但是日期的格式但是对于整个列我不能这样做。
我正在使用的代码:
import numpy
import dateutil.parser
mydate = dateutil.parser.parse(numpy.mydata[1:,0])
print(mydate)
我收到错误:
'module'对象没有属性'mydata'
这是我希望更改格式的列。
print(mydata[1:,0])
['2016-09-15T00:00:13'
'2016-09-15T00:00:38'
'2016-09-15T00:00:53'
...,
'2016-09-15T23:59:28'
'2016-09-15T23:59:37'
'2016-09-15T23:59:52']
答案 0 :(得分:1)
from datetime import datetime
for date in mydata:
date_object = datetime.strptime(date, '%Y-%m-%dT%H:%M:%S')
这是我正在使用的方法的a link。该链接还列出了格式参数。
哦,关于
'module'对象没有属性'mydata'
您调用numpy.mydata
,它是您导入的numpy模块的“mydata”属性的引用。问题是,“mydata”只是你的变量之一,而不是numpy中包含的内容。
答案 1 :(得分:1)
除非你有令人信服的理由避免它,否则大熊猫是进行这种分析的方法。你可以简单地做
import pandas
df = pandas.read_csv('myfile.csv', parse_dates=True)
这将假设第一列是索引列并在其中解析日期。这可能就是你想要的。
答案 2 :(得分:0)
假设您已经处理了numpy.mydata[1:,0]
属性错误
您的数据如下:
In [268]: mydata=['2016-09-15T00:00:13' ,
...: '2016-09-15T00:00:38' ,
...: '2016-09-15T00:00:53' ,
...: '2016-09-15T23:59:28' ,
...: '2016-09-15T23:59:37' ,
...: '2016-09-15T23:59:52']
或以数组形式,它是一个ld数组字符串
In [269]: mydata=np.array(mydata)
In [270]: mydata
Out[270]:
array(['2016-09-15T00:00:13', '2016-09-15T00:00:38', '2016-09-15T00:00:53',
'2016-09-15T23:59:28', '2016-09-15T23:59:37', '2016-09-15T23:59:52'],
dtype='<U19')
numpy
的版本为datetime
,存储为64位浮点数,可以用数字方式使用。您的日期很容易转换为astype
(您的格式为标准):
In [271]: mydata.astype(np.datetime64)
Out[271]:
array(['2016-09-15T00:00:13', '2016-09-15T00:00:38', '2016-09-15T00:00:53',
'2016-09-15T23:59:28', '2016-09-15T23:59:37', '2016-09-15T23:59:52'],
dtype='datetime64[s]')
tolist
将此数组转换为列表 - 并将日期转换为datetime
个对象:
In [274]: D.tolist()
Out[274]:
[datetime.datetime(2016, 9, 15, 0, 0, 13),
datetime.datetime(2016, 9, 15, 0, 0, 38),
datetime.datetime(2016, 9, 15, 0, 0, 53),
datetime.datetime(2016, 9, 15, 23, 59, 28),
datetime.datetime(2016, 9, 15, 23, 59, 37),
datetime.datetime(2016, 9, 15, 23, 59, 52)]
可以转回dtype对象数组:
In [275]: np.array(D.tolist())
Out[275]:
array([datetime.datetime(2016, 9, 15, 0, 0, 13),
datetime.datetime(2016, 9, 15, 0, 0, 38),
datetime.datetime(2016, 9, 15, 0, 0, 53),
datetime.datetime(2016, 9, 15, 23, 59, 28),
datetime.datetime(2016, 9, 15, 23, 59, 37),
datetime.datetime(2016, 9, 15, 23, 59, 52)], dtype=object)
这些对象无法用于数组计算。该清单同样有用。
如果您的字符串格式不是标准格式,则必须在datetime
显示的列表推导中使用@staples
解析器。