首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何更改整个列的日期格式?

如何更改整个列的日期格式?
EN

Stack Overflow用户
提问于 2016-11-02 05:09:24
回答 3查看 3.4K关注 0票数 1

我正在分析.csv文件,在这里,我的第一列是日期时间的格式"2016-09-15T00:00:13“,我想将这个格式更改为标准的python对象,我可以更改一个但日期的格式,但是对于整个列,我不能这样做。

我正在使用的代码:

代码语言:javascript
运行
复制
import numpy
import dateutil.parser
mydate = dateutil.parser.parse(numpy.mydata[1:,0])
print(mydate)

我发现了一个错误:

“模块”对象没有属性“mydata”

下面是我希望更改格式的列。

代码语言:javascript
运行
复制
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']
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-11-02 05:30:26

代码语言:javascript
运行
复制
from datetime import datetime

for date in mydata:
  date_object = datetime.strptime(date, '%Y-%m-%dT%H:%M:%S')

下面是我使用的方法的一个链接。该链接还列出了格式参数。

哦还有关于

“模块”对象没有属性“mydata”

您可以调用numpy.mydata,它是对您导入的numpy模块的"mydata“属性的引用。问题是,"mydata“只是您的变量之一,而不是包含在numpy中的。

票数 1
EN

Stack Overflow用户

发布于 2016-11-02 08:04:06

除非你有一个令人信服的理由来避免它,熊猫才是进行这种分析的方法。你可以简单的做

代码语言:javascript
运行
复制
import pandas
df = pandas.read_csv('myfile.csv', parse_dates=True)

这将假设第一列是索引列,并在其中解析日期。这可能就是你想要的。

票数 1
EN

Stack Overflow用户

发布于 2016-11-02 07:56:38

假设您已经处理了numpy.mydata[1:,0]属性错误

您的数据如下:

代码语言:javascript
运行
复制
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数组。

代码语言:javascript
运行
复制
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轻松转换为(您的格式是标准的):

代码语言:javascript
运行
复制
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对象:

代码语言:javascript
运行
复制
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对象的数组:

代码语言:javascript
运行
复制
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展示的那样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40372864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档