2015-11-11 11 views
8

Sto leggendo da un foglio di Excel e voglio leggere determinate colonne: colonna 0 perché è l'indice di riga e le colonne 22:37. Ora qui è quello che faccio:come leggere determinate colonne da Excel usando Pandas - Python

import pandas as pd 
import numpy as np 
file_loc = "path.xlsx" 
df = pd.read_excel(file_loc, index_col=None, na_values=['NA'], parse_cols = 37) 
df= pd.concat([df[df.columns[0]], df[df.columns[22:]]], axis=1) 

Ma mi auguro ci sia modo migliore per farlo! So se faccio parse_cols=[0, 22,..,37] Posso farlo, ma per dataset di grandi dimensioni questo non ha senso.

ho fatto anche questo:

s = pd.Series(0) 
s[1]=22 
for i in range(2,14): 
    s[i]=s[i-1]+1 
df = pd.read_excel(file_loc, index_col=None, na_values=['NA'], parse_cols = s) 

ma si legge i primi 15 colonne che è la lunghezza del s.

+1

che avrebbe dovuto generare un elenco di colli e passare questo a 'parse_cols 'eg 'parse_cols = [0, 22,23,24 ....., 37]' piuttosto che quello che stai facendo ora – EdChum

+0

Non sei sicuro del motivo per cui non ha funzionato, potrebbe essere un bug, cosa succede quando passi un elenco hard coded: 'df = pd.read_excel (file_loc, index_col = Nessuno, na_values ​​= ['NA'], parse_cols = [0,22,23,24,25,26,27,28,29,30,31, 32,33,34,35,36,37) '? – EdChum

+0

@EdChum, funziona se si passa una lista codificata. – Ana

risposta

13

È possibile utilizzare gli indici colonna (lettere) come questo:

import pandas as pd 
import numpy as np 
file_loc = "path.xlsx" 
df = pd.read_excel(file_loc, index_col=None, na_values=['NA'], parse_cols = "A,C:AA") 
print(df) 

Corresponding documentation:

parse_cols : int or list, default None 
If None then parse all columns, 
If int then indicates last column to be parsed 
If list of ints then indicates list of column numbers to be parsed 
If string then indicates comma separated list of column names and column ranges (e.g. “A:E” or “A,C,E:F”) 
+4

Si noti che i "nomi" devono essere letti come "nomi in Excel", non quelli che si possono scegliere o utilizzare come intestazioni. I documenti non sono chiari su questo, ma vale la pena menzionarli, mi ha dato alcuni grattacapi. –

Problemi correlati