3

このコード:

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 のこの違いはバグ、機能ですか、それとも何か誤解していますか?

4

2 に答える 2

3

私にはバグのように見えます。そのための問題を作成しました。

*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
于 2012-08-27T10:20:06.183 に答える
2

の場合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
于 2012-08-27T12:02:14.740 に答える