2012-08-22 3 views
7

Ho un file csv che ho letto in un dataframe utilizzando l'API pandas. Intendo impostare la mia intestazione invece della prima riga predefinita. (Mi sbarazzerò anche di alcune delle righe.) Come faccio a raggiungerlo al meglio?Imposta le intestazioni utilizzando pandas.read_csv

Ho provato quanto segue, ma questo non ha funzionato come previsto:

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) 

Questo dà seguente errore -

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 

Allora ho provato le impostazioni delle colonne tramite

df.columns = header_row 

Ma questo errore è stato eliminato probabilmente a causa di valori di colonna duplicati.

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') 

Sto usando la versione 0.7.3 di Pandas. Dalla documentazione -

nomi: array come Lista dei nomi delle colonne

sono sicuro che mi manca qualcosa di semplice qui. Grazie per l'aiuto qui.

risposta

1

Pandas 0.7.3 non supporta i duplicati dell'indice. Sono necessari almeno 0.8.0, tra 0.8.0 e 0.8.1 diversi problemi con duplicati nell'indice sono fissi, quindi 0.8.1 (= ultima versione stabile) potrebbe essere la migliore. Comunque anche 0.8.1 non è una risposta al tuo problema, perché questa versione ha un issue con nomi di colonne duplicati (non puoi visualizzare un dataframe con nomi di colonne duplicati).

+0

Grazie per i riferimenti. Ho rivisitato e mi sono sbarazzato del requisito per i valori di colonna duplicati. – Manju