Verwenden Sie drop(), um Zeilen und Spalten aus pandas.DataFrame zu löschen.
Geben Sie vor Version 0.21.0 Zeile/Spalte mit Parameterbeschriftungen und Achse an. Index oder Spalten können ab 0.21.0 verwendet werden.
Dieser Artikel hat folgenden Inhalt.
- Zeilen aus pandas.DataFrame löschen
- Angeben nach Zeilenname (Zeilenbeschriftung)
- Geben Sie nach Zeilennummer an
- Hinweise, wenn der Index nicht gesetzt ist
- Löschen Sie Spalten aus pandas.DataFrame
- Angeben nach Spaltenname (Spaltenbezeichnung)
- Geben Sie nach Spaltennummer an
- Löschen Sie mehrere Zeilen und Spalten auf einmal
Siehe sterben following Artikel zum Entfernen fehlender Werte NaN und Zeilen mit doppelten Elementen.
Der Beispielcode verwendet sterben following Daten.
import pandas as pd
df = pd.read_csv('data/src/sample_pandas_normal.csv', index_col=0)
print(df)
# age state point
# name
# Alice 24 NY 64
# Bob 42 CA 92
# Charlie 18 CA 70
# Dave 68 TX 70
# Ellen 24 CA 88
# Frank 30 NY 57
CSV-Datei ist hier:
Zeilen aus pandas.DataFrame löschen
Angeben nach Zeilenname (Zeilenbeschriftung)
Angabe mit den ersten Parameterbeschriftungen und der zweiten Parameterachse. Setzen Sie im Fall von Zeilen Achse=0.
print(df.drop('Charlie', axis=0))
# age state point
# name
# Alice 24 NY 64
# Bob 42 CA 92
# Dave 68 TX 70
# Ellen 24 CA 88
# Frank 30 NY 57
Der Standardwert ist Achse=0, also kann Achse weggelassen werden.
print(df.drop('Charlie'))
# age state point
# name
# Alice 24 NY 64
# Bob 42 CA 92
# Dave 68 TX 70
# Ellen 24 CA 88
# Frank 30 NY 57
Ab Version 0.21.0 können Sie auch den Parameterindex verwenden.
print(df.drop(index='Charlie'))
# age state point
# name
# Alice 24 NY 64
# Bob 42 CA 92
# Dave 68 TX 70
# Ellen 24 CA 88
# Frank 30 NY 57
Verwenden Sie eine Liste, um mehrere Zeilen gleichzeitig zu löschen.
print(df.drop(['Bob', 'Dave', 'Frank']))
# age state point
# name
# Alice 24 NY 64
# Charlie 18 CA 70
# Ellen 24 CA 88
print(df.drop(index=['Bob', 'Dave', 'Frank']))
# age state point
# name
# Alice 24 NY 64
# Charlie 18 CA 70
# Ellen 24 CA 88
Standardmäßig wird der ursprüngliche DataFrame nicht geändert, und ein neuer DataFrame wird zurückgegeben.
Durch Festlegen des Parameters inplace auf True wird der ursprüngliche DataFrame geändert. In diesem Fall wird kein neuer DataFrame zurückgegeben, und der Rückgabewert ist None.
df_org = df.copy()
df_org.drop(index=['Bob', 'Dave', 'Frank'], inplace=True)
print(df_org)
# age state point
# name
# Alice 24 NY 64
# Charlie 18 CA 70
# Ellen 24 CA 88
Geben Sie nach Zeilennummer an
Wenn SIE nach Zeilennummer angeben möchten, verwenden SIE das Indexattribut von DataFrame.
Geben SIE die Zeilennummer in [] des Indexattributs an, um den entsprechenden Zeilennamen zu erhalten. Über eine Liste können mehrere Zeilennummern angegeben werden.
print(df.index[[1, 3, 5]])
# Index(['Bob', 'Dave', 'Frank'], dtype="object", name="name")
Sie können dies als erste Parameterbeschriftung oder Index von drop() angeben.
print(df.drop(df.index[[1, 3, 5]]))
# age state point
# name
# Alice 24 NY 64
# Charlie 18 CA 70
# Ellen 24 CA 88
print(df.drop(index=df.index[[1, 3, 5]]))
# age state point
# name
# Alice 24 NY 64
# Charlie 18 CA 70
# Ellen 24 CA 88
Hinweise, wenn der Index nicht gesetzt ist
Wenn kein Zeilenname festgelegt ist, ist Index standardmäßig eine Folge von Ganzzahlen. Seien Sie vorsichtig, wenn Index eine Zahl und kein String ist.
df_noindex = pd.read_csv('data/src/sample_pandas_normal.csv')
print(df_noindex)
# name age state point
# 0 Alice 24 NY 64
# 1 Bob 42 CA 92
# 2 Charlie 18 CA 70
# 3 Dave 68 TX 70
# 4 Ellen 24 CA 88
# 5 Frank 30 NY 57
print(df_noindex.index)
# RangeIndex(start=0, stop=6, step=1)
Solange es sich um eine fortlaufende Nummer handelt, ist das Ergebnis dasselbe, unabhängig davon, ob SIE eine Nummer angeben oder das Indexattribut verwenden.
print(df_noindex.drop([1, 3, 5]))
# name age state point
# 0 Alice 24 NY 64
# 2 Charlie 18 CA 70
# 4 Ellen 24 CA 88
print(df_noindex.drop(df_noindex.index[[1, 3, 5]]))
# name age state point
# 0 Alice 24 NY 64
# 2 Charlie 18 CA 70
# 4 Ellen 24 CA 88
Das Ergebnis ist anders, wenn es durch Sortieren usw. in der falschen Reihenfolge ist. Bei der Angabe eines numerischen Werts WIRD die Zeile gelöscht, deren Label der numerischen Wert IST, und bei Verwendung des Indexattributs die Zeile, deren Nummer der numerischen Wert IST gelöscht.
df_noindex_sort = df_noindex.sort_values('state')
print(df_noindex_sort)
# name age state point
# 1 Bob 42 CA 92
# 2 Charlie 18 CA 70
# 4 Ellen 24 CA 88
# 0 Alice 24 NY 64
# 5 Frank 30 NY 57
# 3 Dave 68 TX 70
print(df_noindex_sort.index)
# Int64Index([1, 2, 4, 0, 5, 3], dtype="int64")
print(df_noindex_sort.drop([1, 3, 5]))
# name age state point
# 2 Charlie 18 CA 70
# 4 Ellen 24 CA 88
# 0 Alice 24 NY 64
print(df_noindex_sort.drop(df_noindex_sort.index[[1, 3, 5]]))
# name age state point
# 1 Bob 42 CA 92
# 4 Ellen 24 CA 88
# 5 Frank 30 NY 57
Informationen zum Sortieren finden Sie im following Artikel.
Löschen Sie Spalten aus pandas.DataFrame
Angeben nach Spaltenname (Spaltenbezeichnung)
Angabe mit den ersten Parameterbeschriftungen und der zweiten Parameterachse. Setzen Sie im Fall von Zeilen Achse = 1.
print(df.drop('state', axis=1))
# age point
# name
# Alice 24 64
# Bob 42 92
# Charlie 18 70
# Dave 68 70
# Ellen 24 88
# Frank 30 57
Ab Version 0.21.0 können SIE auch die Parameterspalten verwenden.
print(df.drop(columns='state'))
# age point
# name
# Alice 24 64
# Bob 42 92
# Charlie 18 70
# Dave 68 70
# Ellen 24 88
# Frank 30 57
Verwenden Sie eine Liste, um mehrere Spalten gleichzeitig zu löschen.
print(df.drop(['state', 'point'], axis=1))
# age
# name
# Alice 24
# Bob 42
# Charlie 18
# Dave 68
# Ellen 24
# Frank 30
print(df.drop(columns=['state', 'point']))
# age
# name
# Alice 24
# Bob 42
# Charlie 18
# Dave 68
# Ellen 24
# Frank 30
Der Parameter inplace kann ebenso wie für Zeilen verwendet werden.
df_org = df.copy()
df_org.drop(columns=['state', 'point'], inplace=True)
print(df_org)
# age
# name
# Alice 24
# Bob 42
# Charlie 18
# Dave 68
# Ellen 24
# Frank 30
Geben Sie nach Spaltennummer an
Wenn SIE nach Spaltennummer angeben möchten, verwenden SIE das Spaltenattribut von DataFrame.
print(df.columns[[1, 2]])
# Index(['state', 'point'], dtype="object")
print(df.drop(df.columns[[1, 2]], axis=1))
# age
# name
# Alice 24
# Bob 42
# Charlie 18
# Dave 68
# Ellen 24
# Frank 30
print(df.drop(columns=df.columns[[1, 2]]))
# age
# name
# Alice 24
# Bob 42
# Charlie 18
# Dave 68
# Ellen 24
# Frank 30
Wenn der Wert von Spalten eine ganze Zahl ist, seien Sie wie oben für Zeilen vorsichtig beschrieben.
Löschen Sie mehrere Zeilen und Spalten auf einmal
Ab Version 0.21.0 und höher ist es möglich, mehrere Zeilen und Spalten gleichzeitig zu löschen, indem SIE den Parameterindex und die Spalten angeben.
Natürlich ist es auch möglich, durch Zeilennummer und Spaltennummer anzugeben oder den Parameter an Ort und Stelle anzugeben.
print(df.drop(index=['Bob', 'Dave', 'Frank'],
columns=['state', 'point']))
# age
# name
# Alice 24
# Charlie 18
# Ellen 24
print(df.drop(index=df.index[[1, 3, 5]],
columns=df.columns[[1, 2]]))
# age
# name
# Alice 24
# Charlie 18
# Ellen 24
df_org = df.copy()
df_org.drop(index=['Bob', 'Dave', 'Frank'],
columns=['state', 'point'], inplace=True)
print(df_org)
# age
# name
# Alice 24
# Charlie 18
# Ellen 24