目前我使用pandas将csv文件读入DataFrame
,使用第一列作为索引。第一列是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
但是,在查询索引dtype时,它会返回' object':
In [4]: print df.index.dtype
object
然后我必须手动将其转换为datetime dtype:
In [5]: df.index = pd.to_datetime(df.index)
In [6]: print df.index.dtype
datetime64[ns]
调用read_csv()
时,有没有办法自动将索引设置为datetime dtype?
答案 0 :(得分:1)
我刚刚为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)
答案 1 :(得分:1)
read_csv文档描述了parse_dates参数:
parse_dates:boolean或整数或名称列表或列表或dict列表,默认为False
- 布尔值。如果为True - >尝试解析索引。
- 整数或名称列表。例如如果[1,2,3] - >尝试将第1,2,3列分别解析为单独的日期列。
- 列表清单。例如如果[[1,3]] - >将第1列和第3列组合在一起并解析为 单个日期列。
- dict,例如{'foo':[1,3]} - >将列1,3解析为日期并调用结果'foo'
注意:iso8601格式的日期存在快速路径。
由于您要解析索引,可以使用:
#sidebar