На даний момент обрана відповідь не згадує rename_axis
метод, який можна використовувати для перейменування рівнів індексу та стовпців.
Панда має певну химерність, коли йдеться про перейменування рівнів індексу. Також доступний новий метод DataFrame rename_axis
для зміни назв рівня індексу.
Давайте подивимось на 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'])
Цей DataFrame має один рівень для кожного індексу рядків і стовпців. І індекс рядків і стовпців не мають імені. Давайте змінимо ім’я рівня індексу рядків на "імена".
df.rename_axis('names')
rename_axis
Метод також має можливість змінювати імена на рівні стовпців шляхом зміни axis
параметра:
df.rename_axis('names').rename_axis('attributes', axis='columns')
Якщо індекс встановити для деяких зі стовпців, то ім'я стовпця стане новим іменем рівня індексу. Додамо до рівня індексів наш оригінальний DataFrame:
df1 = df.set_index(['state', 'color'], append=True)
df1
Зверніть увагу, як в початковому індексі немає назви. Ми все ще можемо використовувати, rename_axis
але потрібно передати йому список тієї ж довжини, що і кількість рівнів індексу.
df1.rename_axis(['names', None, 'Colors'])
Ви можете використовувати None
для ефективного видалення імен рівня індексу.
Серії працюють аналогічно, але з деякими відмінностями
Давайте створимо Серію з трьома рівнями індексу
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
Ми можемо використовувати rename_axis
аналогічно тому, як у нас із 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
Зауважте, що під назвою Серія є додатковий фрагмент метаданих Name
. Створюючи серію з DataFrame, цей атрибут встановлюється на ім'я стовпця.
Ми можемо передати ім'я рядка rename
методу, щоб змінити його
s.rename('FOOOOOD')
state color
Jane NY blue Steak
Nick TX green Lamb
Aaron FL red Mango
Name: FOOOOOD, dtype: object
DataFrames не мають цього атрибута, і Infact створить виняток, якщо він використовується таким чином
df.rename('my dataframe')
TypeError: 'str' object is not callable
До панд 0,21 ви могли rename_axis
перейменувати значення в індексі та стовпцях. Вона застаріла, тому не робіть цього
rename_axis
методу.