¿Cómo seleccionar todas las columnas excepto una en pandas?
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
?
Aceptado
Cuando las columnas no son un MultiIndex, df.columns
es 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
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, df
sale ileso de este proceso. Si desea eliminar permanentemente b
de 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 a
y b
.
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