Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.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 Pandas read_csv未将ISO8601识别为日期时间数据类型_Python_Datetime_Pandas - Fatal编程技术网

Python Pandas read_csv未将ISO8601识别为日期时间数据类型

Python Pandas read_csv未将ISO8601识别为日期时间数据类型,python,datetime,pandas,Python,Datetime,Pandas,目前,我正在使用pandas将csv文件读入数据帧,使用第一列作为索引。第一列为ISO 8601格式,因此根据的文档,应将其识别为日期时间: In [1]: import pandas as pd In [2]: df = pd.read_csv('data.csv', index_col=0) In [3]: print df.head() U V Z Ubar Udir 2014-11-01 00:00:00

目前,我正在使用pandas将csv文件读入
数据帧
,使用第一列作为索引。第一列为ISO 8601格式,因此根据的文档,应将其识别为日期时间:

In [1]: import pandas as pd

In [2]: df = pd.read_csv('data.csv', index_col=0)

In [3]: print df.head()
                        U     V     Z    Ubar    Udir
2014-11-01 00:00:00  0.73 -0.81  0.46  1.0904  317.97
2014-11-01 01:00:00  1.26 -1.50  0.32  1.9590  319.97
2014-11-01 02:00:00  1.50 -1.80  0.13  2.3431  320.19
2014-11-01 03:00:00  1.39 -1.65  0.03  2.1575  319.89
2014-11-01 04:00:00  0.94 -1.08 -0.03  1.4318  318.96
但是,当查询索引数据类型时,它返回“object”:

In [4]: print df.index.dtype
object
然后,我必须手动将其转换为datetime数据类型:

In [5]: df.index = pd.to_datetime(df.index)

In [6]: print df.index.dtype
datetime64[ns]

调用
read\u csv()
时,有没有办法自动将索引设置为datetime dtype?

我刚刚为csv文件中的第一列添加了列名

                 Date     U     V     Z    Ubar    Udir
0  2014-11-01 00:00:00  0.73 -0.81  0.46  1.0904  317.97
1  2014-11-01 01:00:00  1.26 -1.50  0.32  1.9590  319.97
2  2014-11-01 02:00:00  1.50 -1.80  0.13  2.3431  320.19
3  2014-11-01 03:00:00  1.39 -1.65  0.03  2.1575  319.89
4  2014-11-01 04:00:00  0.94 -1.08 -0.03  1.4318  318.96

df = pd.read_csv(input_file)
df.index = pd.to_datetime(df['Date'], format='%Y-%m-%d %H:%M:%S')
如果要删除日期列,可以使用

df = df.drop('Date', 1)
文档描述了parse_dates参数:

解析日期:布尔值或整数或名称列表或列表或dict列表,默认为False
-布尔型。如果为True->尝试解析索引
-整数或名称的列表。e、 g.如果[1,2,3]->尝试将列1,2,3解析为单独的日期列
-清单清单。e、 g.如果[[1,3]]->组合第1列和第3列并按如下方式进行分析 一个日期列
-dict,例如,{'foo':[1,3]}->将第1,3列解析为日期并调用结果'foo'
注意:iso8601格式的日期存在快速路径

由于要分析索引,可以使用:

 import pandas as pd
 df = pd.read_csv('data.csv', index_col=0, parse_dates=True)

您没有告诉它将列解析为datetime
df=pd.read\u csv('data.csv',parse\u dates=0,index\u col=0)
是的,这就成功了!由于某种原因,当我阅读
read_csv
文档时,我认为
parse_dates
默认为
True
,可能是因为阅读:“If True->try parse the index”我总是发现
read_csv
文档的这一方面模棱两可,可能不正确,我总是必须传递整数索引,注意:如果要分析多个列,如:
parse_dates=[0,3,4]
和嵌套列表,如果要将多个列作为单个datetime列进行分析:
parse_dates=[[0,1]]
。所以我注意到设置
parse_dates=True
不起作用,所以我总是为列indexYeah传递一个列表或单个int,我以前在组合多个列时使用过
parse_dates
date_parser
。嗯,这很奇怪,
parse_dates=True
在我当前的设置(Python2.7.8 x64,pandas 0.15.1)下似乎工作得很好奇怪,但在Python3.3.5 64位,pandas 0.15.1上使用您的数据仍然失败