2

次の形式の OHLC データを含む csv ファイルを読み込もうとしています。

In [49]: !head '500008.csv'
03 Jan 2000,12.85,13.11,12.74,13.11,976500,,,,
04 Jan 2000,13.54,13.60,12.56,13.33,2493000,,,,
05 Jan 2000,12.68,13.34,12.37,12.68,1680000,,,,
06 Jan 2000,12.60,13.30,12.27,12.34,2800500,,,,
07 Jan 2000,12.53,12.70,11.82,12.57,2763000,,,,
10 Jan 2000,13.58,13.58,13.58,13.58,13500,,,,
11 Jan 2000,14.66,14.66,13.40,13.47,1694220,,,,
12 Jan 2000,13.66,13.99,13.20,13.54,519164,,,,
13 Jan 2000,13.67,13.87,13.54,13.80,278400,,,,
14 Jan 2000,13.84,13.99,13.30,13.50,718814,,,,

データをロードする次のことを試しました。

df = read_csv('500008.csv', parse_dates=[0,1,2], usecols=range(6), 
                            header=None, index_col=0)

しかし今、名前を付ける列に名前を付けたいと思います。それで、私は試しました、

df = read_csv('500008.csv', parse_dates=[0,1,2], usecols=range(6),
                            header=None, index_col=0, names='d o h l c v'.split())

しかし、これは言って失敗します、

IndexError: list index out of range

誰かが私が間違っていることを指摘できますか?

4

2 に答える 2

5

バグなのか機能なのかはわかりませんが、列のサブセットのみを指定した場合でも、存在するすべての列の名前を指定する必要がありますusecols

df = pd.read_csv(StringIO(raw),
                 parse_dates=True,
                 header=None,
                 index_col=0,
                 usecols=[0,1,2,3,4,5],
                 names='0 1 2 3 4 5 6 7 8 9'.split())

を与える

                1      2      3      4        5
0                                              
2000-01-03  12.85  13.11  12.74  13.11   976500
2000-01-04  13.54  13.60  12.56  13.33  2493000
2000-01-05  12.68  13.34  12.37  12.68  1680000

namesと の両方に完全なリストを指定するエッジケースusecolsを試して、徐々に減らして何が起こるかを確認することで、これを理解しました。

usecols=[1,2,3]奇妙なのは、たとえば次のようにしようとしたときに表示されるエラーメッセージですnames=['1','2','3']

ValueError: Passed header names mismatches usecols

意味がありません...

于 2013-01-12T22:09:51.383 に答える
0
于 2013-12-24T01:05:54.263 に答える