标签:Python与Excel,pandas
重命名pandas数据框架列有很多原因。例如,可能希望列名更具描述性,或者可能希望缩短名称。本文将介绍如何更改数据框架中的名称。
准备用于演示的数据框架
pandas库提供了一种从网页读取数据的便捷方式,因此我们将从百度百科——世界500强公司名单——加载一个表格。
图1
看起来总共有6列。下面单独列出了这个表的列。
图2
下面还提供了实际的百度百科页面的截图,以供参考。
图3
让我们对数据框架进行一些修改。首先,我们将删除一些不需要的列。我们不需要下列栏目:上午排名,所以我们删除它们。
图4
删除列后,我们可以检查df.head()以确认删除成功–现在只有5列。我们只剩下以下几列:
图5
我认为有些名字太啰嗦,所以将重命名以下名称:
最新排名->排名
总部所在国家->国家
就像pandas中的大多数内容一样,有几种方法可以重命名列。我们将了解一些方法,并讨论在不同场景下哪种方法更好。
rename()方法
该方法的可读性可能是三种方法中最好的。我们可以使用这种方法重命名索引(行)或列,我们需要告诉pandas我们正在更改什么(即列或行),这样就不会产生混淆。还需要在更改前后告诉pandas列名,这提高了可读性。
df1 = df.rename(columns = {'最新排名': '排名', '总部所在国家':'国家'})
如上所示,我们传入一个参数columns,它是一个包含前后列名的字典。我选择不覆盖原始数据框架(即默认情况下inplace=False),因为我希望保留原始数据框架以供其他演示使用。注意,我们只需要传入计划更改名称的列。
图6
set_axis()方法
此方法与rename()不同,因为set_axis()只需要最终的列名,但是必须为我们想要保留的每一列输入名称。
df2 = df.set_axis(['排名', '公司名称', '营业收入(百万美元)', '利润(百万美元)', '国家'], axis = 1)
图7
df.columns方法
df.columns返回给定数据框架的列名列表。
图8
通过将上述列名重新赋值给一个新的类似列表的对象,我们可以轻松更改这些列名:
图9
注意,此方法与set_axis()方法类似,因为我们需要为要保留的每一列传入名称。
何时使用何方法?
“关注细节”的读者可能已经知道了答案。
- .rename()方法要求我们只传递需要更改的列
- .set_axis()和df.columns要求我们传递所有列名
换句话说,使用:
- .rename()当只需要更改几列时。例如,你的表可能有100列,而只更改其中的3列。唯一的缺点是,在名称更改之前,必须知道原始列名。
- .set_axis()或df.columns,当你的表没有太多列时,因为必须为每一列指定一个新名称!但好处是,不需要事先知道原始列名,只需进行更改即可。
注:本文学习整理自pythoninoffice.com。