2012-11-05 13 views
6

Supponiamo di avere un file csv con 400 colonne. Non riesco a caricare l'intero file in un DataFrame (non si adatta alla memoria). Comunque, voglio solo 50 colonne, e questo si adatterà alla memoria. Non vedo alcun modo costruito in Pandas per farlo. Che cosa suggerisci? Sono aperto all'utilizzo dell'interfaccia PyTables o pandas.io.sql.Come caricare solo colonne specifiche dal file csv in un DataFrame

Lo scenario migliore sarebbe una funzione come: pandas.read_csv (...., colonne = ['nome', 'età', ..., 'reddito']). Cioè passiamo un elenco di nomi di colonne (o numeri) che verranno caricati.

risposta

3

Non esiste un modo predefinito per farlo al momento. Vorrei suggerire di dividere il file e iterarlo su di esso e scartare le colonne che non vuoi. Quindi qualcosa come pd.concat([x.ix[:, cols_to_keep] for x in pd.read_csv(..., chunksize=200)])

16

Ian, ho implementato l'opzione usecols che fa esattamente quello che descrivi. Sarà nei prossimi panda 0.10; la versione di sviluppo sarà presto disponibile.


Dal 0.10, è possibile utilizzare come usecols

df = pd.read_csv(...., usecols=['name', 'age',..., 'income']) 
Problemi correlati