Tengo un DataFrame de pandas con 4 columnas y quiero crear un nuevo DataFrame que solo tenga tres de las columnas. Esta pregunta es similar a: Extraer columnas específicas de un marco de datos, pero para pandas no R. El siguiente código no funciona, genera un error y ciertamente no es la forma pandanic de hacerlo.
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
¿Cuál es la forma pandasnic de hacerlo?
fuente
old[['A']].copy()
, se requieren los corchetes dobles para crear un nuevo marco de datos. Tenga en cuenta queold['A'].copy()
solo creará una serie.La forma más fácil es
.
fuente
Otra forma más simple parece ser:
donde
old.column_name
te daré una serie. Haga una lista de todas las series de columnas que desea conservar y páselo al constructor DataFrame. Necesitamos hacer una transposición para ajustar la forma.fuente
Forma funcional genérica
Específico para su problema anterior
fuente
Si desea tener un nuevo marco de datos, entonces:
fuente
Por lo que puedo decir, no necesariamente necesita especificar el eje cuando utiliza la función de filtro.
devuelve el mismo marco de datos que
fuente
columnas por índice:
fuente