Автор оригинала: Pankaj Kumar.
Иногда мы хотим переименовать столбцы и индексы в объекте PandaFrame PandaS. Мы можем использовать функцию Pandas DataFrame Rename () для переименования столбцов и индексов. Он поддерживает следующие параметры.
- Mapper : словарь или функция для применения к столбцам и индексам. Параметр «AXIS» определяет целевую ось – столбцы или индексы.
- индекс : Должен быть словар или функция, чтобы изменить имена индекса.
- Колонны : Должен быть словар или функция, чтобы изменить имена столбцов.
- Ось : Может быть int или строка. Он используется с параметром «Mapper», чтобы определить целевую ось. Допустимые значения («индекс», «столбцы») или число (0, 1). Значение по умолчанию является «индексом».
- в помещении : Если true, файл dataframe изменяется. В противном случае возвращается новый dataframe и текущий dataframe остается без изменений. Значение по умолчанию неверно’.
- Уровень : Может быть INT или имя уровня. Он используется в случае многоиндекса, только переименовывает этикетки на указанном уровне.
- Ошибки : Возможные значения («игнорируйте», «Rising»), по умолчанию «игнорировать». Если указано как «ROING», то keyError поднят, когда поднимается «Mapper», «Index» или «столбцы» или «столбцы», которые не присутствуют в преобразовании индекса. Если «игнорировать», существующие ключи будут переименованы, и дополнительные ключи будут игнорироваться.
Некоторые важные моменты о функции Rename ().
- Рекомендуется использовать аргументы ключевых слов, чтобы четко указать намерение.
- Мы можем переименовать отдельный столбец или несколько столбцов с этой функцией, в зависимости от значений в словаре.
Давайте посмотрим на некоторые примеры использования функции Pandas Rename ().
1. Пандас переименовывает столбцы
import pandas as pd
d1 = {'Name': ['Pankaj', 'Lisa', 'David'], 'ID': [1, 2, 3], 'Role': ['CEO', 'Editor', 'Author']}
df = pd.DataFrame(d1)
print('Source DataFrame:\n', df)
# rename columns
df1 = df.rename(columns={'Name': 'EmpName', 'ID': 'EmpID', 'Role': 'EmpRole'})
print('Result DataFrame:\n', df1)
Выход:
Source DataFrame:
Name ID Role
0 Pankaj 1 CEO
1 Lisa 2 Editor
2 David 3 Author
Result DataFrame:
EmpName EmpID EmpRole
0 Pankaj 1 CEO
1 Lisa 2 Editor
2 David 3 Author
Вышеупомянутый Rename () вызов функции также может быть написан следующим образом.
df1 = df.rename(mapper={'Name': 'EmpName', 'ID': 'EmpID', 'Role': 'EmpRole'},
axis='columns') # axis=1 corresponds to columns
Ясно, что использование аргументов ключевых слов яснее, чем использование аргументов Mapper и Axis.
2. Пандас переименовать один столбец
Если вы хотите переименовать один столбец, просто пройдите пару одной пары ключа в параметре Dict Columns.
df1 = df.rename(columns={'Name': 'EmpName'})
print(df1)
Выход:
EmpName ID Role 0 Pankaj 1 CEO 1 Lisa 2 Editor 2 David 3 Author
Результатом будет одинаковым, если в словаре столбцов есть не совпадение сопоставления.
df1 = df.rename(columns={'Name': 'EmpName', 'X': 'Y'}) # same result since there is no X column
3. Пандас переименовывает индексы
Если вы хотите переименовать индексы, пройдите Dict для параметра «Индекс».
df2 = df.rename(index={0: '#0', 1: '#1', 2: '#2'})
print('Renamed Indexes:\n', df2)
Выход:
Renamed Indexes:
Name ID Role
#0 Pankaj 1 CEO
#1 Lisa 2 Editor
#2 David 3 Author
Мы также можем переименовать индексы, используя аргументы Mapper и Axis.
df2 = df.rename({0: '#0', 1: '#1', 2: '#2'}, axis=0)
# axis='index' will work, first argument is assigned to 'mapper'
4. Пандас переименовать один индекс
df2 = df.rename(index={1: '#1'})
print(df2)
Выход:
Name ID Role
0 Pankaj 1 CEO
#1 Lisa 2 Editor
2 David 3 Author
5. Изменение DataFrame Inplace
Если вы хотите изменить само по себе исходный файл DataFrame, пройдите аргумент Inflace как True.
import pandas as pd
d1 = {'Name': ['Pankaj', 'Lisa', 'David'], 'ID': [1, 2, 3], 'Role': ['CEO', 'Editor', 'Author']}
df = pd.DataFrame(d1)
print('Source DataFrame:\n', df)
df.rename(index={0: '#0', 1: '#1', 2: '#2'}, columns={'Name': 'EmpName', 'ID': 'EmpID', 'Role': 'EmpRole'}, inplace=True)
print('Source DataFrame:\n', df)
Выход:
Source DataFrame:
Name ID Role
0 Pankaj 1 CEO
1 Lisa 2 Editor
2 David 3 Author
Source DataFrame:
EmpName EmpID EmpRole
#0 Pankaj 1 CEO
#1 Lisa 2 Editor
#2 David 3 Author
6. Использование функции Mapper для переименования столбцов
df = pd.DataFrame({'NAME': ['Pankaj', 'Lisa'], 'ID': [1, 2], 'ROLE': ['CEO', 'Editor']})
print(df)
df.rename(mapper=str.lower, axis=1, inplace=True)
print(df)
Выход:
NAME ID ROLE
0 Pankaj 1 CEO
1 Lisa 2 Editor
name id role
0 Pankaj 1 CEO
1 Lisa 2 Editor
7. Использование функций для переименования столбцов и индексов
import pandas as pd
import math
df = pd.DataFrame({'NAME': ['Pankaj', 'Lisa'], 'ID': [1, 2], 'ROLE': ['CEO', 'Editor']})
df.rename(columns=str.lower, index=math.degrees, inplace=True)
print(df)
Выход:
name id role
0.00000 Pankaj 1 CEO
57.29578 Lisa 2 Editor
8. Строгая переименовать и поднимая клейрору
import pandas as pd
df = pd.DataFrame({'NAME': ['Pankaj', 'Lisa'], 'ID': [1, 2], 'ROLE': ['CEO', 'Editor']})
df1 = df.rename(columns={'Salary': 'EmpSalary'}) # unmatched mappings are ignored
df1 = df.rename(columns={'Salary': 'EmpSalary'}, errors='raise') # unmatched mappings raising KeyError
Выход:
Traceback (most recent call last): File "/Users/pankaj/Documents/PycharmProjects/hello-world/journaldev/pandas/pandas_rename_column.py", line 58, indf1 = df.rename(columns={'Salary': 'EmpSalary'}, errors='raise') KeyError: "['Salary'] not found in axis"
9. Ссылки
- Pandas DataFrame Переименовать () API DOC
- Учебник модуля Python Pandas