2016-03-02 3 views
7

Wollen Sie nur bestimmte Datenbereiche aus einer Excel-Tabelle (.xlsm-Format, da es Makros enthält) in einen Pandas-Datenrahmen importieren. War es auf diese Weise tun:In Pandas, was ist das Äquivalent von "nrows" von read_csv() in read_excel() verwendet werden?

data = pd.read_excel(filepath, header=0, skiprows=4, nrows= 20, parse_cols = "A:D") 

Aber es scheint, dass nrows nur mit read_csv arbeitet()? Was wäre das Äquivalent für read_excel()?

+0

Es sieht nicht da wie ist eine solche Option. –

+1

Irgendwelche Vorschläge, wie man nur bis zu einer bestimmten Zeile importieren kann? – Gabriel

+0

Etwas wie 'pd.read_excel (...). Head (50)' wird dir die ersten 50 Zeilen bringen, aber natürlich liest es und wirft es ab, also habe ich Angst es ist nicht sehr hilfreich. Es tut uns leid. –

Antwort

9

Wenn Sie die Anzahl der Zeilen in Ihrer Excel-Tabelle kennen, können Sie die skip_footer Parameter verwenden, um die ersten n zu lesen - skip_footer Zeilen Ihrer Datei, wobei n die Gesamtzahl der Zeilen ist.

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_excel.html

Verbrauch:

data = pd.read_excel(filepath, header=0, parse_cols = "A:D", skip_footer=80) 

Angenommen, Ihre Excel-Blatt 100 Zeilen hat, diese Zeile die ersten 20 Zeilen analysieren würde.

+0

Lustig, ich denke, dass psychologisch "Fußzeile" mit etwas schlank verbunden ist (wie eine physische Seite Fußzeile). Gute Antwort. –

+0

@Erol Vielen Dank, dass Sie darauf hingewiesen haben – Gabriel

3

Ich würde gerne (erweitern) @Erol's answer etwas flexibler machen.

Unter der Annahme, dass wir die Gesamtzahl der Zeilen in dem Excel-Blatt wissen nicht:

xl = pd.ExcelFile(filepath) 

# parsing first (index: 0) sheet 
total_rows = xl.book.sheet_by_index(0).nrows 

skiprows = 4 
nrows = 20 

# calc number of footer rows 
# (-1) - for the header row 
skip_footer = total_rows - nrows - skiprows - 1 

df = xl.parse(0, skiprows=skiprows, skip_footer=skip_footer, parse_cols="A:D") \ 
     .dropna(axis=1, how='all') 

.dropna(axis=1, how='all') wird alle Spalten fallen enthalten nurNaN ‚s

Verwandte Themen