2015-11-11 18 views
8

Ich lese aus einem Excel-Blatt und ich möchte bestimmte Spalten lesen: Spalte 0, weil es der Zeilenindex ist, und Spalten 22:37. Jetzt hier ist, was ich tue:Wie liest man bestimmte Spalten aus Excel mit 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) 

Aber ich würde hoffen, es gibt einen besseren Weg, das zu tun! Ich weiß, wenn ich mache, kann ich es tun, aber für große Datensätze macht das keinen Sinn.

Ich habe auch dieses:

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) 

Aber es liest die ersten 15 Spalten, die die Länge der s ist.

+1

Sie eine Liste von cols generieren würde und übergeben diese an 'parse_cols 'z 'parse_cols = [0, 22,23,24 ....., 37]' anstatt, was Sie gerade tun – EdChum

+0

Nicht sicher, warum das nicht funktioniert hat, könnte es ein Fehler sein, was passiert, wenn Sie eine passieren hart codierte Liste: 'df = pd.read_excel (Datei_Loc, Index_Col = Keine, na_Values ​​= ['NA'], ParseCols = [0,22,23,24,25,26,27,28,29,30,31, 32,33,34,35,36,37) '? – EdChum

+0

@EdChum, Es funktioniert, wenn eine hart codierte Liste übergeben. – Ana

Antwort

13

Sie können Spaltenindizes (Buchstaben) wie folgt verwenden:

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

Es sollte beachtet werden, dass "Namen" als "Namen in Excel" gelesen werden sollten, nicht diejenigen, die Sie wählen oder als Header verwenden könnten. Die Ärzte sind sich darüber nicht im Klaren, aber es ist erwähnenswert, es hat mir Kopfschmerzen bereitet. –

Verwandte Themen