Автор оригинала: 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