• 日常搜索
  • 百度一下
  • Google
  • 在线工具
  • 搜转载

如何重命名 Pandas 列

重命名 pandas 数据框中的列是一种常见操作。了解重命名 pandas 列的四种不同方法。

Pandas是一个流行的用于数据分析的 python 库。我们需要分析的数据通常有不同的格式,包括 csv 和 tsv 文件、关系数据库等。您需要对数据进行一些初步检查,处理缺失值,并准备数据以供进一步分析。

有了熊猫,你可以:

  • 从各种来源获取数据 

  • 探索数据集并处理其中的缺失值

  • 分析数据集以获得见解

对于所有数据分析项目,您通常会从 Python 数据结构(例如字典)创建数据框。或者您将从其他来源读取数据,例如将 csv 文件读取到数据框中。

dataFrame是pandas中的基本数据结构。它包含沿行的记录以及沿列的各种字段或属性。

但是,您可能必须重命名列名称,以使它们更具描述性并提高可读性。在这里,您将学习四种不同的重命名列的方法。让我们开始!

创建 Pandas 数据框

您可以在安装了 pandas 的Jupyter Notebook环境中按照本教程进行操作。或者您可以按照Google Colab进行操作。

首先,我们将创建一个 pandas 数据框并在本教程的其余部分中使用它。

这是一本字典book_dict:

books_dict = {
    "one": [
        "Atomic Habits",
        "His Dark Materials",
        "The Midnight Library",
        "The Broken Earth",
        "Anxious People",
    ],
    "two": [
        "James Clear",
        "Philip Pullman",
        "Matt Haig",
        "N.K.Jemisin",
        "Fredrik Backman",
    ],
    "three": ["Nonfiction", "Fantasy", "Magical Realism", "Fantasy", "Fiction"],
    "four": [4, 5, 3, 5, 4],}

我们将首先导入 pandas,然后df从books_dict.

import pandas as pd

注意:在重命名列之前,我们将继续返回以下代码单元以创建数据帧的初始版本。

df = pd.DataFrame(books_dict)

我们可以用来df.head()获取数据帧的前几行df。默认情况下,它返回前五行。这里df只有五行;所以在使用时df.head()我们得到整个数据框。

df.head()

如何重命名 Pandas 列  第1张

我们看到列名当前是字典的键。但这不是很具有描述性。那么让我们重新命名它们吧!?‍?

在 Pandas 中重命名列的方法

现在让我们看看重命名 pandas 中的列的各种方法:

  • 将数据框的属性设置columns为新列名称的列表

  • 在数据帧上使用 rename() 方法

  • 使用 str.replace 重命名一列或多列

  • set_axis()在数据框上使用该方法

1、设置列属性

对于任何数据框,该columns属性包含列名称列表:

df.columns# Index(['one', 'two', 'three', 'four'], dtype='object')

让我们重命名列以表示每个字段代表什么,然后调用df.head()以查看结果:

df.columns = ['Title','Author','Genre','Rating']df.head()

如何重命名 Pandas 列  第2张

2、使用 rename() 方法

要重命名 pandas 中的列,您可以使用rename()以下语法的方法:

df.rename(column={mapping})

该映射可以是以下形式的字典:

{'old_col_name_1':'new_col_name_1', 'old_col_name_2':'new_col_name_2',...,'old_col_name_n':'new_col_name_n'}

让我们df从books_dict字典中创建:

df = pd.DataFrame(books_dict)

使用rename()具有上述语法的方法,我们得到df_1。这是数据框的副本,其中的列已重命名。

df_1 = df.rename(columns={'one':'Title','two':'Author','three':'Genre','four':'Rating'})df_1.head()

于是修改了列名df_1:

如何重命名 Pandas 列  第3张

但原始数据框的列名df不会改变:

df.head()

如何重命名 Pandas 列  第4张

因为此方法允许我们提供新旧列名称之间的映射,所以我们可以使用它来重命名单个列和多个列。

就地重命名列

如果您想修改现有数据框而不创建新副本怎么办?

为此,您可以在方法调用中设置inplaceequal to 。True

df.rename(columns={'one':'Title','two':'Author','three':'Genre','four':'Rating'},inplace=True)df.head()

这将重命名原始数据框的列df:

如何重命名 Pandas 列  第5张

到目前为止,我们已经了解了如何:

  • 通过提供将旧列名映射到新列名的字典来重命名列 

  • 在适当的位置重命名列而不创建新的数据框

您也可以以另一种方式使用重命名方法。

重命名列的另一种方法

让我们重命名这些列,使其变为大写:

df = pd.DataFrame(books_dict)
df.columns = ['TITLE','AUTHOR','GENRE','RATING']df.head()

数据框df现在看起来像这样:

如何重命名 Pandas 列  第6张

假设我们想要将每个列名称更改为标题大小写。我们可以在对象上指定函数或方法调用,而不是为每个列名提供字典,如下所示:

df.rename(str.title,axis='columns',inplace=True)df.head()

如何重命名 Pandas 列  第5张

在这里,我们设置axis  为'columns'并使用str.title将所有列名称转换为标题大小写。

3、在列名字符串上使用 str.replace()

与往常一样,运行以下代码单元以从字典创建数据框:

df = pd.DataFrame(books_dict)

在 Python 中,您可以使用replace()带有语法的方法str.replace(this, with_this)来获取包含所需更改的字符串的副本。这是一个例子:

>>> str1 = 'Marathon'>>> str1.replace('Mara','Py')'Python'

您知道 columns 属性包含一个包含列名称的字符串列表。所以你可以str.replace('old_column_name','new_column_name')这样调用:

df.columns = df.columns.str.replace('one','Title')df.head()

如何重命名 Pandas 列  第8张

这里我们仅将“one”列重命名为“Title”,因此其他列名称保持不变。

现在让我们使用相同的方法重命名其他列:

df.columns = df.columns.str.replace('two','Author')df.columns = df.columns.str.replace('three','Genre')df.columns = df.columns.str.replace('four','Rating')df.head()

如何重命名 Pandas 列  第3张

当您只需要重命名一个列或一小部分列时,这种重命名列的方法非常有用。

4、使用 set_axis() 方法

让我们回到数据框的初始版本:

df = pd.DataFrame(books_dict)

您还可以使用该set_axis()方法来重命名列。语法如下:

df.set_axis([list_of_column_names],axis='columns')

默认情况下,该set_axis()方法返回数据帧的副本。但如果你想就地修改数据框,你可以设置copy为False。

df = df.set_axis(['Title','Author','Genre','Rating'],axis='columns',copy=False)df.head()

如何重命名 Pandas 列  第5张

结论

以下是对 pandas 数据框中重命名列的不同方法的回顾:

  • 对于示例数据框df,columns 属性df.columns是列名称的列表。要重命名列,您可以将此属性设置为新列名称的列表。

  • 重命名列的方法rename()使用以下语法:df.rename(columns={mapping})wheremapping指从旧列名到新列名的映射。rename()您还可以通过指定要应用于所有列名称的函数来使用该方法: df.rename(function or method call, axis='columns')。

  • 就像replace()在 Python 字符串上使用该方法一样,您可以使用df.columns.str.replace('old_column_name', 'new_column_name')来替换列名。 

  • 在列中重命名的另一种方法是使用 set_axis 方法和语法:df.set_axis(list_of_col_names,axis='columns')。

这就是本教程的全部内容!


文章目录
  • 创建 Pandas 数据框
  • 在 Pandas 中重命名列的方法
  • 1、设置列属性
  • 2、使用 rename() 方法
    • 就地重命名列
    • 重命名列的另一种方法
  • 3、在列名字符串上使用 str.replace()
  • 4、使用 set_axis() 方法
  • 结论
  • 发表评论