2016-01-08 2 views
34

Ho un dataframe panda con 4 colonne e voglio creare un dataframe nuova che solo ha tre delle colonne. Questa domanda è simile a: Extracting specific columns from a data frame ma per panda non R. Il seguente codice non funziona, solleva un errore e non è certamente il modo pandasnic per farlo.panda: Estrazione specifiche colonne selezionate da un dataframe alla nuova dataframe

import pandas as pd 
old = pd.DataFrame({'A' : [4,5], 'B' : [10,20], 'C' : [100,50], 'D' : [-30,-50]}) 
new = pd.DataFrame(zip(old.A, old.C, old.D)) # raises TypeError: data argument can't be an iterator 

Qual è il modo pandasnico di farlo?

risposta

64

C'è un modo per farlo e in realtà è simile a R

new = old[['A', 'C', 'D']].copy() 

Qui si sta solo selezionando le colonne desiderate dal telaio dei dati originali e la creazione di una variabile per quelli. Se vuoi modificare il nuovo dataframe, probabilmente vorrai usare .copy() per evitare uno SettingWithCopyWarning.

Un metodo alternativo è quello di utilizzare filter che creerà una copia di default:

new = old.filter(['A','B','D'], axis=1) 

Infine, a seconda del numero di colonne nel dataframe originale, potrebbe essere più succinta per esprimere questo utilizzando un drop (questo creerà anche una copia per impostazione predefinita):

new = old.drop('B', axis=1)