7

pandas API を使用してデータフレームに読み込む csv ファイルがあります。デフォルトの最初の行ではなく、独自のヘッダーを設定するつもりです。(一部の行も削除します。) これを達成するにはどうすればよいですか?

次のことを試しましたが、これは期待どおりに機能しませんでした。

header_row=['col1','col2','col3','col4', 'col1', 'col2'] # note the header has duplicate column values
df = pandas.read_csv(csv_file, skiprows=[0,1,2,3,4,5], names=header_row)

これにより、次のエラーが発生します-

File "third_party/py/pandas/io/parsers.py", line 187, in read_csv
File "third_party/py/pandas/io/parsers.py", line 160, in _read
File "third_party/py/pandas/io/parsers.py", line 628, in get_chunk
File "third_party/py/pandas/core/frame.py", line 302, in __init__
File "third_party/py/pandas/core/frame.py", line 388, in _init_dict
File "third_party/py/pandas/core/internals.py", line 1008, in form_blocks
File "third_party/py/pandas/core/internals.py", line 1036, in _simple_blockify
File "third_party/py/pandas/core/internals.py", line 1068, in _stack_dict
IndexError: index out of bounds

次に、列の設定を試みました

df.columns = header_row

しかし、おそらく列の値が重複しているため、これはエラーになりました。

File "engines.pyx", line 101, in pandas._engines.DictIndexEngine.get_loc    
(third_party/py/pandas/src/engines.c:2498)
File "engines.pyx", line 107, in pandas._engines.DictIndexEngine.get_loc 
(third_party/py/pandas/src/engines.c:2447)
Exception: ('Index values are not unique', 'occurred at index entity')

パンダ 0.7.3 バージョンを使用しています。ドキュメントから -

names : 列名の配列のようなリスト

ここで単純なものが欠けていると確信しています。ここで助けてくれてありがとう。

4

1 に答える 1

1

Pandas 0.7.3 はインデックスの重複をサポートしていません。少なくとも 0.8.0 が必要です。0.8.0 から 0.8.1 の間で、インデックスの重複に関するいくつかの問題が修正されているため、0.8.1 (=最新の安定版リリース) が最適な場合があります。ただし、このバージョンには重複する列名の問題があるため、0.8.1 でさえ問題の解決策ではありません (重複する列名を持つデータフレームを表示することはできません)。

于 2012-08-22T07:27:59.563 に答える