python - una - Eliminar columnas no numéricas de un DataFrame de pandas
seleccionar columnas pandas python (3)
En mi aplicación, cargo archivos de texto que están estructurados de la siguiente manera:
- Primera columna no numérica (ID)
- Una cantidad de columnas no numéricas (cadenas)
- Una cantidad de columnas numéricas (flotantes)
El número de columnas no numéricas es variable. Actualmente cargo los datos en un DataFrame como este:
source = pandas.read_table(inputfile, index_col=0)
Me gustaría eliminar todas las columnas no numéricas de una sola vez, sin saber sus nombres o índices, ya que esto podría ser factible leyendo su tipo. ¿Es esto posible con los pandas o tengo que cocinar algo solo?
Es un método privado, pero hará el truco: source._get_numeric_data ()
In [2]: import pandas as pd
In [3]: source = pd.DataFrame({''A'': [''foo'', ''bar''], ''B'': [1, 2], ''C'': [(1,2), (3,4)]})
In [4]: source
Out[4]:
A B C
0 foo 1 (1, 2)
1 bar 2 (3, 4)
In [5]: source._get_numeric_data()
Out[5]:
B
0 1
1 2
Para evitar el uso de un método privado, también puede usar select_dtypes , donde puede incluir o excluir los dtypes que desee.
Corrió hacia él en esta publicación en exactamente lo mismo.
O en tu caso, específicamente:
source.select_dtypes([''number'']) or source.select_dtypes([np.number]
También tengo otra solución posible para eliminar las columnas con valor categórico con 2 líneas de código, definir una lista con columnas de valores categóricos (1ª línea) y soltarlas con la segunda línea. df es nuestro marco de datos
list=pd.DataFrame(df.categorical).columns
df= df.drop(list,axis=1)