熊猫read_csv无法将ISO8601识别为datetime dtype

Pee*_*ker 5 python datetime pandas

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

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
Run Code Online (Sandbox Code Playgroud)

但是,在查询索引dtype时,它返回'object':

In [4]: print df.index.dtype
object
Run Code Online (Sandbox Code Playgroud)

然后,我必须手动将其转换为datetime dtype:

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

In [6]: print df.index.dtype
datetime64[ns]
Run Code Online (Sandbox Code Playgroud)

有什么方法可以在调用时自动将索引设置为datetime dtype read_csv()

Tau*_*das 3

read_csv文档描述了 parse_dates 参数:

\n\n
\n

parse_dates :布尔值、整数列表、名称列表、列表列表或字典列表,默认 False
\n - 布尔值。如果 True -> 尝试解析索引。
\n - 整数或名称列表。例如,如果 [1, 2, 3] -> 尝试将第 1、2、3 列分别解析为单独的日期列。
\n - 列表的列表。例如,如果 [[1, 3]] -> 合并第 1 列和第 3 列并解析为单个日期列。
\n - dict,例如 {\xe2\x80\x98foo\xe2\x80\x99 : [1, 3]} -> 将第 1、3 列解析为日期并调用结果 \xe2\x80\x98foo\xe2\x80\x99
\n 注意:对于 iso8601 格式的日期存在快速路径。

\n
\n\n

由于您想解析索引,您可以使用:

\n\n
 import pandas as pd\n df = pd.read_csv(\'data.csv\', index_col=0, parse_dates=True)\n
Run Code Online (Sandbox Code Playgroud)\n