Panda leggono nella tabella senza intestazioni


239

Come posso leggere in un file .csv (senza intestazioni) e quando voglio solo un sottoinsieme delle colonne (diciamo 4 ° e 7 ° su un totale di 20 colonne), usando i panda? Non riesco a fareusecols

Risposte:


351

Per leggere un csv in cui non è presente un'intestazione e solo per alcune colonne è necessario passare i parametri header=Nonee usecols=[3,6]per la quarta e la settima colonna:

df = pd.read_csv(file_path, header=None, usecols=[3,6])

Vedi i documenti


67

Le risposte precedenti erano buone e corrette, ma a mio avviso, un namesparametro aggiuntivo lo renderà perfetto e dovrebbe essere il modo consigliato, soprattutto quando il CSV non ha headers.

Soluzione

Uso usecolse namesparametri

df = pd.read_csv(file_path, usecols=[3,6], names=['colA', 'colB'])

Lettura aggiuntiva

o usa header=Noneper dire esplicitamente alle persone che csvnon ha intestazioni (comunque entrambe le linee sono identiche )

df = pd.read_csv(file_path, usecols=[3,6], names=['colA', 'colB'], header=None)

In modo che tu possa recuperare i tuoi dati tramite

# with `names` parameter
df['colA']
df['colB'] 

invece di

# without `names` parameter
df[0]
df[1]

Spiegare

Basato su read_csv , quando namesviene passato esplicitamente, allora si headercomporterà come Noneinvece di 0, quindi si può saltare header=Nonequando namesesistono.


9

Assicurati di specificare passa header=Nonee aggiungi usecols=[3,6]per la quarta e la settima colonna.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.