columna de caída de pandas del marco de datos de Python usando int
154
Entiendo que para soltar una columna se usa df.drop ('nombre de columna', eje = 1). ¿Hay alguna manera de soltar una columna usando un índice numérico en lugar del nombre de la columna?
Puede eliminar la columna en el iíndice de esta manera:
df.drop(df.columns[i], axis=1)
Podría funcionar de forma extraña, si tiene nombres duplicados en las columnas, por lo que para hacer esto puede cambiar el nombre de la columna que desea eliminar por nuevo nombre. O puede reasignar DataFrame de esta manera:
df = df.iloc[:,[j for j, c in enumerate(df.columns)if j != i]]
inplace=Truese usa para realizar los cambios en el marco de datos en sí mismo sin que la columna caiga en una copia del marco de datos. Si necesita mantener su original intacto, use:
si no lo usa inplace=True, tendrá que hacerlo df = df.drop()si desea ver el cambio en dfsí mismo.
muon
Cómo indexar cols, si tengo que soltar 100 columnas que son continuas en el medio del marco de datos.
Sai Kiran
36
Si hay varias columnas con nombres idénticos, las soluciones dadas aquí hasta ahora eliminarán todas las columnas, que pueden no ser lo que uno está buscando. Este puede ser el caso si uno está tratando de eliminar columnas duplicadas, excepto una instancia. El siguiente ejemplo aclara esta situación:
# make a df with duplicate columns 'x'
df = pd.DataFrame({'x': range(5),'x':range(5),'y':range(6,11)}, columns =['x','x','y'])
df
Out[495]:
x x y
000611172228333944410# attempting to drop the first column according to the solution offered so far
df.drop(df.columns[0], axis =1)
y
06172839410
Como puede ver, ambas columnas X fueron descartadas. Solución alternativa:
column_numbers =[x for x in range(df.shape[1])]# list of columns' integer indices
column_numbers .remove(0)#removing column integer index 0
df.iloc[:, column_numbers]#return all columns except the 0th column
x y
0061172283394410
Como puede ver, esto realmente eliminó solo la columna 0 (primera 'x').
si realmente quieres hacerlo con enteros (pero ¿por qué?), entonces podrías construir un diccionario.
col_dict ={x: col for x, col in enumerate(df.columns)}
entonces df = df.drop(col_dict[0], 1)funcionará como se desee
editar: puede ponerlo en una función que lo haga por usted, aunque de esta manera crea el diccionario cada vez que lo llama
def drop_col_n(df, col_n_to_drop):
col_dict ={x: col for x, col in enumerate(df.columns)}return df.drop(col_dict[col_n_to_drop],1)
df = drop_col_n(df,2)
Respuestas:
Puede eliminar la columna en el
i
índice de esta manera:Podría funcionar de forma extraña, si tiene nombres duplicados en las columnas, por lo que para hacer esto puede cambiar el nombre de la columna que desea eliminar por nuevo nombre. O puede reasignar DataFrame de esta manera:
fuente
Suelte varias columnas como esta:
inplace=True
se usa para realizar los cambios en el marco de datos en sí mismo sin que la columna caiga en una copia del marco de datos. Si necesita mantener su original intacto, use:fuente
inplace=True
, tendrá que hacerlodf = df.drop()
si desea ver el cambio endf
sí mismo.Si hay varias columnas con nombres idénticos, las soluciones dadas aquí hasta ahora eliminarán todas las columnas, que pueden no ser lo que uno está buscando. Este puede ser el caso si uno está tratando de eliminar columnas duplicadas, excepto una instancia. El siguiente ejemplo aclara esta situación:
Como puede ver, ambas columnas X fueron descartadas. Solución alternativa:
Como puede ver, esto realmente eliminó solo la columna 0 (primera 'x').
fuente
Debe identificar las columnas según su posición en el marco de datos. Por ejemplo, si desea soltar (del) columna número 2,3 y 5, será,
fuente
Si tiene dos columnas con el mismo nombre. Una forma simple es cambiar manualmente el nombre de las columnas de esta manera: -
Luego puede soltar a través del índice de columna como lo solicitó, de esta manera: -
df.column[1]
caerá el índice 1.Recuerde eje 1 = columnas y eje 0 = filas.
fuente
si realmente quieres hacerlo con enteros (pero ¿por qué?), entonces podrías construir un diccionario.
entonces
df = df.drop(col_dict[0], 1)
funcionará como se deseeeditar: puede ponerlo en una función que lo haga por usted, aunque de esta manera crea el diccionario cada vez que lo llama
fuente
Puede usar la siguiente línea para soltar las dos primeras columnas (o cualquier columna que no necesite):
Referencia
fuente
Como puede haber varias columnas con el mismo nombre, primero debemos cambiar el nombre de las columnas. Aquí hay un código para la solución.
fuente