2016-03-02 7 views
7

Chcesz importować tylko pewien zakres danych z arkusza kalkulacyjnego Excel (format .xlsm ponieważ ma makr) do dataframe pandy. robi to w ten sposób:W Pandach, jaki jest odpowiednik "nrows" z read_csv() do użycia w read_excel()?

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

Ale wydaje się, że nrows działa tylko z read_csv()? Jaki byłby odpowiednik dla read_excel()?

+0

To nie wygląda jak tam jest taką opcją. –

+1

Wszelkie sugestie, jak zaimportować do określonego wiersza? – Gabriel

+0

Coś jak 'pd.read_excel (...). Head (50)' dostaniesz pierwszych 50 wierszy, ale oczywiście czyta i odrzuca, więc obawiam się, że nie jest to zbyt pomocne. Przepraszam. –

Odpowiedz

9

Jeśli znasz liczbę wierszy w arkuszu programu Excel, można użyć skip_footer parametr przeczytać pierwszy n - skip_footer wierszy pliku, gdzie n jest całkowita liczba wierszy.

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

Zastosowanie:

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

Zakładając, że arkusz excel ma 100 wierszy, ta linia będzie analizować pierwszych 20 wierszy.

+0

Zabawne, myślę, że psychologicznie "stopka" kojarzy się z czymś cienkim (jak stopka strony fizycznej). Dobra odpowiedź. –

+0

@Erol Dzięki za wskazanie – Gabriel

3

Chciałbym zrobić (przedłużenia) @Erol's answer nieco bardziej elastyczne.

Zakładając, że nie wiemy, całkowitą liczbę wierszy w arkuszu Excel:

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') spadnie wszystkie kolumny zawierające tylkoNaN „s

Powiązane problemy