Ich habe einen Datenrahmen, der so aussieht:
import pandas
import numpy as np
df = DataFrame(np.random.rand(4,4), columns = list('abcd'))
df
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
Wie kann ich alle Spalten außer bekommen column b
?
Antworten:
Wenn die Spalten kein MultiIndex sind,
df.columns
handelt es sich nur um ein Array von Spaltennamen, sodass Sie Folgendes tun können:quelle
drop
ist IMO besser. Ein bisschen lesbarer und behandelt Multiindexesdrop
besser ist - ich denke, es ist nützlich zu entdecken, dass (einstufige) Spalten Arrays sind, mit denen Sie arbeiten können, aber speziell zum Löschen einer Spalte,drop
die sehr gut lesbar sind und mit komplexen Indizes gut funktionieren.Nicht benutzen
ix
. Es ist veraltet . Die lesbarste und idiomatischste Art, dies zu tun, istdf.drop()
:Beachten Sie, dass standardmäßig
.drop()
nicht an Ort und Stelle funktioniert. ist trotz des ominösen Namensdf
von diesem Prozess unversehrt. Wenn Sie dauerhaft entfernen möchtenb
ausdf
, tundf.drop('b', inplace=True)
.df.drop()
Akzeptiert auch eine Liste von Beschriftungen, z. B.df.drop(['a', 'b'], axis=1)
wird die Spaltea
und gelöschtb
.quelle
df.drop([('l1name', 'l2name'), 'anotherl1name'], axis=1)
. Scheint Liste gegen Tupel zu verwenden, um zu bestimmen, ob Sie mehrere Spalten (Liste) oder einen Multiindex (Tupel) möchten.df.drop(columns='a')
oderdf.drop(columns=['a', 'b'])
. Kann auch ersetzencolumns=
mitindex=
.quelle
sort=False
wenn Sie dieses Verhalten vermeiden möchten (df.columns.difference(['b'], sort=False)
)Sie können verwenden
df.columns.isin()
Wenn Sie mehrere Spalten löschen möchten, so einfach wie:
quelle
Hier ist ein anderer Weg:
Sie übergeben nur alle Spalten, die angezeigt werden sollen, mit Ausnahme derjenigen, die Sie nicht möchten.
quelle
Eine weitere geringfügige Änderung an @Salvador Dali ermöglicht das Ausschließen einer Liste von Spalten:
oder
quelle
Ich denke, der beste Weg ist der von @Salvador Dali erwähnte Weg. Nicht dass die anderen falsch liegen.
Denn wenn Sie einen Datensatz haben, in dem Sie nur eine Spalte auswählen und zu Vergleichs- oder Berechnungszwecken in eine Variable und den Rest der Spalten in eine andere einfügen möchten. Dann hilft es möglicherweise nicht, die Spalte des Datensatzes zu löschen. Natürlich gibt es auch dafür Anwendungsfälle.
Dann können Sie diese Sammlung von Spalten in Variablen
x_cols
in eine andere Variable einfügen, wiex_cols1
für andere Berechnungen.quelle
Hier ist ein einzeiliges Lambda:
vorher :
nachher :
quelle