¿Cómo seleccionar todas las columnas excepto una en pandas?

Resuelto markov zain asked hace 9 años • 14 respuestas

Tengo un marco de datos que se parece a este:

          a         b         c         d
0  0.418762  0.042369  0.869203  0.972314
1  0.991058  0.510228  0.594784  0.534366
2  0.407472  0.259811  0.396664  0.894202
3  0.726168  0.139531  0.324932  0.906575

¿Cómo puedo obtener todas las columnas excepto b?

markov zain avatar Apr 21 '15 12:04 markov zain
Aceptado

Cuando las columnas no son un MultiIndex, df.columnses solo una matriz de nombres de columnas, por lo que puedes hacer:

df.loc[:, df.columns != 'b']

          a         c         d
0  0.561196  0.013768  0.772827
1  0.882641  0.615396  0.075381
2  0.368824  0.651378  0.397203
3  0.788730  0.568099  0.869127
Marius avatar Apr 21 '2015 05:04 Marius

No lo uses ix. Está en desuso . La forma más legible e idiomática de hacer esto es df.drop():

>>> df.drop('b', axis=1)
          a         c         d
0  0.418762  0.869203  0.972314
1  0.991058  0.594784  0.534366
2  0.407472  0.396664  0.894202
3  0.726168  0.324932  0.906575

Tenga en cuenta que, de forma predeterminada, .drop()no funciona in situ; a pesar del siniestro nombre, dfsale ileso de este proceso. Si desea eliminar permanentemente bde df, hágalo df.drop('b', inplace=True).

df.drop()también acepta una lista de etiquetas, por ejemplo, df.drop(['a', 'b'], axis=1)eliminará la columna ay b.

mike avatar Jun 09 '2016 05:06 mike
df[df.columns.difference(['b'])]

Out: 
          a         c         d
0  0.427809  0.459807  0.333869
1  0.678031  0.668346  0.645951
2  0.996573  0.673730  0.314911
3  0.786942  0.719665  0.330833
ayhan avatar Aug 28 '2016 14:08 ayhan