Aktualnie wybrana odpowiedź nie wspomina o rename_axis
metodzie, za pomocą której można zmienić nazwę poziomu indeksu i kolumn.
Pandy mają pewne dziwactwa, jeśli chodzi o zmianę nazwy poziomów indeksu. Dostępna jest również nowa metoda DataFrame rename_axis
do zmiany nazw poziomów indeksu.
Przyjrzyjmy się ramce DataFrame
df = pd.DataFrame({'age':[30, 2, 12],
'color':['blue', 'green', 'red'],
'food':['Steak', 'Lamb', 'Mango'],
'height':[165, 70, 120],
'score':[4.6, 8.3, 9.0],
'state':['NY', 'TX', 'FL']},
index = ['Jane', 'Nick', 'Aaron'])
Ta ramka DataFrame ma jeden poziom dla każdego z indeksów wierszy i kolumn. Indeks wiersza i kolumny nie ma nazwy. Zmieńmy nazwę poziomu indeksu wiersza na „nazwy”.
df.rename_axis('names')
rename_axis
Metoda ma również możliwość zmiany nazwy poziom kolumna zmieniając axis
parametr:
df.rename_axis('names').rename_axis('attributes', axis='columns')
Jeśli ustawisz indeks z niektórymi kolumnami, nazwa kolumny stanie się nową nazwą poziomu indeksu. Dodajmy do poziomów indeksowania naszej oryginalnej ramki DataFrame:
df1 = df.set_index(['state', 'color'], append=True)
df1
Zwróć uwagę, że oryginalny indeks nie ma nazwy. Nadal możemy użyć, rename_axis
ale musimy przekazać jej listę o takiej samej długości, jak liczba poziomów indeksu.
df1.rename_axis(['names', None, 'Colors'])
Możesz użyć, None
aby skutecznie usunąć nazwy poziomów indeksu.
Serie działają podobnie, ale z pewnymi różnicami
Utwórzmy serię z trzema poziomami indeksu
s = df.set_index(['state', 'color'], append=True)['food']
s
state color
Jane NY blue Steak
Nick TX green Lamb
Aaron FL red Mango
Name: food, dtype: object
Możemy użyć rename_axis
podobnie, jak zrobiliśmy z DataFrames
s.rename_axis(['Names','States','Colors'])
Names States Colors
Jane NY blue Steak
Nick TX green Lamb
Aaron FL red Mango
Name: food, dtype: object
Zwróć uwagę, że pod nazwą Series znajduje się dodatkowy fragment metadanych Name
. Podczas tworzenia serii z DataFrame ten atrybut jest ustawiany na nazwę kolumny.
Możemy przekazać rename
metodzie nazwę ciągu , aby ją zmienić
s.rename('FOOOOOD')
state color
Jane NY blue Steak
Nick TX green Lamb
Aaron FL red Mango
Name: FOOOOOD, dtype: object
Ramki DataFrames nie mają tego atrybutu i infact zgłosi wyjątek, jeśli zostanie użyty w ten sposób
df.rename('my dataframe')
TypeError: 'str' object is not callable
Przed wersją pandas 0.21 mogłeś rename_axis
zmienić nazwy wartości w indeksie i kolumnach. Został wycofany, więc nie rób tego
rename_axis
metody.