此代码:
import pandas as pd
from StringIO import StringIO
data = "date,c1\n2012-07-31 02:00,1.1\n2012-07-31 02:15,2.2\n2012-07-31 02:30,3.3\n"
df1 = pd.read_csv(StringIO(data),parse_dates=True).set_index(('date'))
df2 = pd.read_csv(StringIO(data),parse_dates=[0] ).set_index(('date'))
print "df1:\n{index}".format(index=df1.index)
print "df2:\n{index}".format(index=df2.index)
返回:
df1:
array([2012-07-31 02:00, 2012-07-31 02:15, 2012-07-31 02:30], dtype=object)
df2:
<class 'pandas.tseries.index.DatetimeIndex'>
[2012-07-31 02:00:00, ..., 2012-07-31 02:30:00]
Length: 3, Freq: None, Timezone: None
df1和df2之间的区别是错误,功能,还是我误解了什么?
答案 0 :(得分:3)
对我来说看起来像个错误。我为此创建了issue。
请注意,通过使用* index_col *参数,可以设置索引。
In [15]: df = pd.read_csv(StringIO(data),parse_dates=[0], index_col=0)
In [15]: df.index
<class 'pandas.tseries.index.DatetimeIndex'>
[2012-07-31 02:00:00, ..., 2012-07-31 02:30:00]
Length: 3, Freq: None, Timezone: None
答案 1 :(得分:1)
如果parse_dates=True
,读者将尝试将索引解析为日期时间(请参阅文档:http://pandas.pydata.org/pandas-docs/stable/io.html)。由于您没有在原始调用中设置索引,因此它没有尝试解析它。
这将有效:
In [237]: df1 = pd.read_csv(StringIO(data),parse_dates=True, index_col=0)
In [238]: df1
Out[238]:
c1
date
2012-07-31 02:00:00 1.1
2012-07-31 02:15:00 2.2
2012-07-31 02:30:00 3.3
In [239]: df1.index
Out[239]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2012-07-31 02:00:00, ..., 2012-07-31 02:30:00]
Length: 3, Freq: None, Timezone: None