
Sie können Spalten-/Indexnamen von pandas.DataFrame umbenennen (ändern), indem Sie die Methoden rename(), add_prefix(), add_suffix(), set_axis() verwenden oder die Spalten-/Indexattribute aktualisieren.
Auf die gleiche Weise können Sie auch Indexnamen (Labels) von pandas.Series umbenennen.
Dieser Artikel hat folgenden Inhalt.
- Spalten-/Indexname umbenennen (Label):
rename()
- Mehrere Spalten-/Indexnamen (Labels) ändern
- Aktualisieren Sie das ursprüngliche Objekt:
inplace
- Umbenennen mit Funktionen oder Lambda-Ausdrücken
- Präfix/Suffix zu Spaltennamen hinzufügen:
add_prefix(), add_suffix()
- Alle Namen (Labels) umbenennen
- set_axis()
- Aktualisieren Sie die Spalten-/Indexattribute von pandas.DataFrame
- Für Pandas.Serie
Außerdem WIRD die Methode set_index() bereitgestellt, sterben Eine vorhandene Spalte als Index festlegt. Nichts finden Sie im folgenden Artikel.
Erstellen Sie beispielsweise pandas.DataFrame wie folgt:
import pandas as pd
df = pd.DataFrame({'A': [11, 21, 31],
'B': [12, 22, 32],
'C': [13, 23, 33]},
index=['ONE', 'TWO', 'THREE'])
print(df)
# A B C
# ONE 11 12 13
# TWO 21 22 23
# THREE 31 32 33
Spalten-/Indexname umbenennen (Label):rename()
Sie können die Methode rename() von pandas.DataFrame verwenden, um den Spalten-/Indexnamen einzeln zu ändern.
Geben Sie den ursprünglichen Namen und den neuen Namen im Diktat wie {ursprünglicher Name: neuer Name} für den Spalten-/Indexparameter von rename() an.
Spalte steht für den Spaltennamen und Index für den Indexnamen. Wenn SIE beides ändern möchten, können Sie nur eine der Spalten oder einen Index angeben.
Ein neuer DataFrame wird gelöscht und der ursprüngliche DataFrame wird nicht geändert.
df_new = df.rename(columns={'A': 'Col_1'}, index={'ONE': 'Row_1'})
print(df_new)
# Col_1 B C
# Row_1 11 12 13
# TWO 21 22 23
# THREE 31 32 33
print(df)
# A B C
# ONE 11 12 13
# TWO 21 22 23
# THREE 31 32 33
Mehrere Spalten-/Indexnamen (Labels) ändern
Sie können mehrere Spalten-/Indexnamen gleichzeitig ändern, indem Sie Elemente zu dict hinzufügen.
print(df.rename(columns={'A': 'Col_1', 'C': 'Col_3'}))
# Col_1 B Col_3
# ONE 11 12 13
# TWO 21 22 23
# THREE 31 32 33
Aktualisieren Sie das ursprüngliche Objekt:inplace
Standardmäßig wird der ursprüngliche DataFrame nicht geändert, und ein neuer DataFrame wird zurückgegeben.
Durch Festlegen des Inplace-Parameters 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_copy = df.copy()
df_copy.rename(columns={'A': 'Col_1'}, index={'ONE': 'Row_1'}, inplace=True)
print(df_copy)
# Col_1 B C
# Row_1 11 12 13
# TWO 21 22 23
# THREE 31 32 33
Umbenennen mit Funktionen oder Lambda-Ausdrücken
Sie können auch Funktionen (aufrufbare Objekte) im Index- und Spaltenparameter der Methode rename() angeben.
Wenden Sie beispielsweise eine Funktion an, um Groß- und Kleinschreibung umzuwandeln:
print(df.rename(columns=str.lower, index=str.title))
# a b c
# One 11 12 13
# Two 21 22 23
# Three 31 32 33
Sie können auch Lambda-Ausdrücke anwenden.
print(df.rename(columns=lambda s: s*3, index=lambda s: s + '!!'))
# AAA BBB CCC
# ONE!! 11 12 13
# TWO!! 21 22 23
# THREE!! 31 32 33
Präfix/Suffix zu Spaltennamen hinzufügen:add_prefix(), add_suffix()
Die Methoden add_prefix() und add_suffix() fügen Präfixe und Suffixe zu Spaltennamen hinzu.
Die im Argument angegebene Zeichenfolge WIRD am Anfang oder am Ende von Spaltennamen hinzugefügt.
print(df.add_prefix('X_'))
# X_A X_B X_C
# ONE 11 12 13
# TWO 21 22 23
# THREE 31 32 33
print(df.add_suffix('_X'))
# A_X B_X C_X
# ONE 11 12 13
# TWO 21 22 23
# THREE 31 32 33
add_prefix() und add_suffix() benennen nur Spalten um. Wenn SIE dem Index Präfix oder Suffix hinzufügen möchten, geben SIE den Lambda-Ausdruck im Argumentindex mit der Methode rename() wie oben beschrieben an.
Außerdem sind add_prefix() und add_suffix() nicht vorhanden. Wenn Sie das ursprüngliche Objekt aktualisieren möchten, überschreiben Sie es wie df = df.add_prefix().
Alle Namen (Labels) umbenennen
Um alle Namen zu ändern, verwenden SIE sterben Methode set_axis() oder aktualisieren Sie Spalten/Indexattribute.
set_axis()
Sie können alle Spalten-/Indexnamen mit der Methode set_axis() von pandas.DataFrame ändern.
Geben Sie neue Spalten-/Indexnamen als erste Parameterbeschriftungen in einem listenähnlichen Objekt wie einer Liste oder einem Tupel an.
Das Setzen des Parameters axis auf 0 oder ‚index‘ aktualisiert den Index, und das Setzen auf 1 oder columns aktualisiert die Spalten. Wenn weggelassen, wird der Index aktualisiert.
print(df.set_axis(['Row_1', 'Row_2', 'Row_3'], axis=0))
# A B C
# Row_1 11 12 13
# Row_2 21 22 23
# Row_3 31 32 33
print(df.set_axis(['Row_1', 'Row_2', 'Row_3'], axis='index'))
# A B C
# Row_1 11 12 13
# Row_2 21 22 23
# Row_3 31 32 33
print(df.set_axis(['Col_1', 'Col_2', 'Col_3'], axis=1))
# Col_1 Col_2 Col_3
# ONE 11 12 13
# TWO 21 22 23
# THREE 31 32 33
print(df.set_axis(['Col_1', 'Col_2', 'Col_3'], axis='columns'))
# Col_1 Col_2 Col_3
# ONE 11 12 13
# TWO 21 22 23
# THREE 31 32 33
print(df.set_axis(['Row_1', 'Row_2', 'Row_3']))
# A B C
# Row_1 11 12 13
# Row_2 21 22 23
# Row_3 31 32 33
Beachten Sie, dass ein Fehler ausgelöst WIRD, WENN die Größe (Anzahl der Elemente) der angegebenen Liste nicht mit der Anzahl der Zeilen oder Spalten angezeigt wird.
# print(df.set_axis(['Row_1', 'Row_2', 'Row_3', 'Row_4']))
# ValueError: Length mismatch: Expected axis has 3 elements, new values have 4 elements
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.
df_copy = df.copy()
df_copy.set_axis(['Row_1', 'Row_2', 'Row_3'], inplace=True)
print(df_copy)
# A B C
# Row_1 11 12 13
# Row_2 21 22 23
# Row_3 31 32 33
Aktualisieren Sie die Spalten-/Indexattribute von pandas.DataFrame
You can sterben Spalten und Indexattribute von pandas.DataFrame auch direkt aktualisieren.
Den Spalten und Indexattributen can Listen und Tupel zugewiesen Werden.
df.index = ['Row_1', 'Row_2', 'Row_3']
df.columns = ['Col_1', 'Col_2', 'Col_3']
print(df)
# Col_1 Col_2 Col_3
# Row_1 11 12 13
# Row_2 21 22 23
# Row_3 31 32 33
Beachten Sie, dass ein Fehler ausgelöst WIRD, WENN sterben Größe (Anzahl der Elemente) der Liste nicht mit der Anzahl der Zeilen und Spalten wechseln.
# df.index = ['Row_1', 'Row_2', 'Row_3', 'Row_4']
# ValueError: Length mismatch: Expected axis has 3 elements, new values have 4 elements
Für Pandas.Serie
Sie können den Bezeichnungsnamen (Index) von pandas.Series ändern, wie in den vorherigen Beispielen von pandas.DataFrame gezeigt.
Erstellen Sie beispielsweise pandas.Series wie folgt:
s = pd.Series([1, 2, 3], index=['ONE', 'TWO', 'THREE'])
print(s)
# ONE 1
# TWO 2
# THREE 3
# dtype: int64
pandas.Series.rename()
print(s.rename({'ONE': 'a', 'THREE': 'c'}))
# a 1
# TWO 2
# c 3
# dtype: int64
print(s.rename(str.lower))
# one 1
# two 2
# three 3
# dtype: int64
pandas.Series.add_prefix(), pandas.Series.add_suffix()
print(s.add_prefix('X_'))
# X_ONE 1
# X_TWO 2
# X_THREE 3
# dtype: int64
print(s.add_suffix('_X'))
# ONE_X 1
# TWO_X 2
# THREE_X 3
# dtype: int64
pandas.Series.set_axis()
print(s.set_axis(['a', 'b', 'c']))
# a 1
# b 2
# c 3
# dtype: int64
Aktualisieren Sie die Indexattribute von pandas.Series
s.index = ['a', 'b', 'c']
print(s)
# a 1
# b 2
# c 3
# dtype: int64