Skip to content

Pandas: Spalten-/Indexnamen (Labels) von DataFrame umbenennen

Python

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