重命名 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 中重命名列的方法
现在让我们看看重命名 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()
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:
但原始数据框的列名df不会改变:
df.head()
因为此方法允许我们提供新旧列名称之间的映射,所以我们可以使用它来重命名单个列和多个列。
就地重命名列
如果您想修改现有数据框而不创建新副本怎么办?
为此,您可以在方法调用中设置inplaceequal to 。True
df.rename(columns={'one':'Title','two':'Author','three':'Genre','four':'Rating'},inplace=True)df.head()
这将重命名原始数据框的列df:
到目前为止,我们已经了解了如何:
通过提供将旧列名映射到新列名的字典来重命名列
在适当的位置重命名列而不创建新的数据框
您也可以以另一种方式使用重命名方法。
重命名列的另一种方法
让我们重命名这些列,使其变为大写:
df = pd.DataFrame(books_dict)
df.columns = ['TITLE','AUTHOR','GENRE','RATING']df.head()
数据框df现在看起来像这样:
假设我们想要将每个列名称更改为标题大小写。我们可以在对象上指定函数或方法调用,而不是为每个列名提供字典,如下所示:
df.rename(str.title,axis='columns',inplace=True)df.head()
在这里,我们设置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()
这里我们仅将“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()
当您只需要重命名一个列或一小部分列时,这种重命名列的方法非常有用。
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 数据框中重命名列的不同方法的回顾:
对于示例数据框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 中重命名列的方法
- 就地重命名列
- 重命名列的另一种方法
发表评论