recorrer data columna agregar python pandas dataframe

data - columna de caída de pandas del marco de datos python utilizando int



agregar columna pandas (4)

Entiendo que para eliminar una columna, use df.drop (''nombre de columna'', eje = 1). ¿Hay alguna forma de eliminar una columna usando un índice numérico en lugar del nombre de la columna?


Si hay varias columnas con nombres idénticos, las soluciones proporcionadas aquí eliminarán todas las columnas, que pueden no ser lo que se 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 0 0 0 6 1 1 1 7 2 2 2 8 3 3 3 9 4 4 4 10 # attempting to drop the first column according to the solution offered so far df.drop(df.columns[0], axis = 1) y 0 6 1 7 2 8 3 9 4 10

Como puede ver, se soltaron ambas columnas X. Solución alternativa:

columnNumbers = [x for x in range(df.shape[1])] # list of columns'' integer indices columnNumbers.remove(0) #removing column integer index 0 df.iloc[:, columnNumbers] #return all columns except 0th column x y 0 0 6 1 1 7 2 2 8 3 3 9 4 4 10

Como puede ver, esto realmente eliminó solo la 0ª columna (primera ''x'').


Suelta varias columnas como esta:

cols = [1,2,4,5,12] df.drop(df.columns[cols],axis=1,inplace=True)


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 llame

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)


Puede eliminar la columna en i index así:

df.drop(df.columns[i], axis=1)

Podría funcionar extraño, si tiene nombres duplicados en columnas, por lo que puede cambiar el nombre de la columna que desea eliminar columna por nombre nuevo. O puede reasignar DataFrame de esta manera:

df = df.iloc[:, [j for j, c in enumerate(df.columns) if j != i]]