如何在Pandas中重命名列

710 阅读4分钟

在Python中,有几种方法可以重命名Pandas中的列或改变Pandas数据框架的列名。在这篇文章中,你将看到这些方法中的一些应用,然后是一些使用它们的实用技巧。

创建一个基本的数据框架并在Pandas中重命名一个列

# Creating a basic DataFrame
import pandas as pd

df = pd.DataFrame({
    'name': ['Aryan', 'Rohan', 'Riya', 'Yash', 'Siddhant'],
    'Tpye': [
        'Full-time Employee', 'Intern', 'Part-time Employee',
        'Part-time Employee', 'Full-time Employee'
    ],
    'Dept':
    ['Administration', 'Technical', 'Management', 'Technical', 'Technical'],
    'Salary': [20000, 5000, 10000, 10000, 20000]
})

df

Rename column

上述DataFrame的列名没有描述性或不合适。让我们来看看如何重命名这些列。

pandas.DataFrame.rename

pandas.DataFrame.rename 方法是重命名pandas DataFrame中列的主要方法。

pandas.DataFrame.rename(mapper=None, index=None, columns=None, axis=None, copy=True, inplace=False, level=None, errors='ignore')

目的: 改变或自定义潘达斯数据框架的标签。

参数:

-mapper: 字典函数。它用于应用一个特定的函数来转换列的名称。

-axis: 英特字符串(默认:'index')。用于确定是否通过指定整数值0(用于索引)或1(用于列)或字符串值('index'用于索引或'columns'用于列)将更改应用于索引或列名。

-index: 字典函数。在改变索引时可替代指定轴值。如果指定了轴参数的值,就不需要传递这个参数。

-列: 字典函数。替代指定轴的值,用于改变列名。如果指定了轴参数的值,就不需要传递这个参数。

-复制: 布尔值(默认:)。用于复制基础数据。

-inplace: 布尔值(默认 :假)。如果这个参数设置为False,那么将创建一个具有所需变化的新DataFrame Int字符串。在多级索引的情况下,列名将只在指定的级别被改变。 如果这个参数被设置为'raise',那么如果要改变的名称在指定级别不存在,将引发一个KeyError。如果设置为false,这种情况将被忽略。

返回: 一个在指定轴上改变了标签的pandas DataFrame。

尽管在rename 方法中有几个参数可用,但在改变列名时只需要其中的几个。

重命名一个单列

# Using df.columns to view the column names of the DataFrame
print('Before:', df.columns)
#OUTPUT

Rename single column

让我们来重命名。

df.rename(columns={'name': 'Name'}, inplace=True)

# Passing a dictionary where the original column name is the key and the new column name is passed as the value to the key.

print('After:', df.columns)
#OUTPUT

Rename single column

重命名多列

rename 方法也可以用来重命名pandas中的多个列。
原来的列名作为字典中的键被传递,新的列名作为字典中相应键的值被传递。

df.rename(columns={
    "name": "Name",
    "Tpye": "Type",
    "Dept": "Department"
},
          inplace=True)

print('After:', df.columns)

pandas.DataFrame.columns

我们可以直接给DataFrame分配一个新的列表或者列名的元组。这对于一次性重命名pandas中的多个列是非常有用的。

print('Before:', df.columns)

Rename column

# Directly assign a list of new column names as the column names of the dataset.
df.columns = ['Name', 'Type', 'Department', 'Salary']
print('After:', df.columns)

Rename column

pandas.DataFrame.set_axis

pandas.DataFrame.set_axis 方法是用来改变索引或列名的。这个方法也可以用来在pandas中一次性重命名多个列,方法是传递一个新的列名的列表或元组,并将参数的值设置为1。

print('Before:', df.columns)

Rename column

# Pass a list of column names and set axis=1
df.set_axis(['Name', 'Type', 'Department', 'Salary'], axis=1, inplace=True)
print('After:', df.columns)

Rename column

实用提示

  • rename 方法对于一次性重命名单列或多列非常有用。然而,不要忘记将inplace参数设置为'True',这样你所做的改变就会应用到数据框架上。
  • rename 方法也可以用来通过使用用户定义的函数对列名进行自定义转换。

比如说:

print('original column names:', df.columns)

Rename column

Rename column

  • 建议只有在大部分或全部列名需要改变时才使用columnsset_axis 方法,因为每次使用该方法时都要传递整个列名列表,这样做可能很麻烦。

测试你的知识

Q1: 我们如何使用pandas.DataFrame.rename 方法来改变列名?

答: 旧的列名和新的列名作为相应的键值对在字典中传递,或者也可以使用自定义的用户定义函数来改变列名。

Q2: 当使用pandas.DataFrame.columns 方法时,通过向该方法传递一个只包含新列名的列表来改变列名是真还是假?

答: 假的,传递给函数的列表应该包含数据集中所有特征的名称。

Q3: 找出给定代码中的错误,写出使用set_axis 方法改变列名的正确代码。

答:

df.set_axis = (('Name', 'Type', 'Department', 'Salary'), axis=0)

df.set_axis = (('Name', 'Type', 'Department', 'Salary'), axis=1)