前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在 Pandas DataFrame中重命名列?

如何在 Pandas DataFrame中重命名列?

作者头像
五分钟学大数据
发布2022-10-05 19:29:51
5.5K0
发布2022-10-05 19:29:51
举报
文章被收录于专栏:五分钟学大数据

DataFrame上最常见的操作之一是重命名(rename)列名称。

分析人员重命名列名称的动机之一是确保这些列名称是有效的Python属性名称。这意味着列名称不能以数字开头,而是带下画线的小写字母数字。好的列名称还应该是描述性的,言简意赅,并且不应与现有的DataFrame或Series属性冲突。

本文中,我们将重命名列名称。重命名的动机是使代码更易于理解,并让你的环境对你有所帮助。如果使用点表示法访问Series,则Jupyter将允许自动补全Series方法(但不允许在索引访问时自动补全方法)。

  • 举例

1)读取movie数据集。

代码语言:javascript
复制
movies = pd.read_csv("data/movie.csv")

2)DataFrame的重命名方法接收将旧值映射到新值的字典。

可以为这些列创建一个字典,如下所示。

代码语言:javascript
复制
 col_map = {
  "director_name": "director",
  "num_critic_for_reviews": "critic_reviews",
... }

3)将字典传递给重命名方法,并将结果分配给新变量。

代码语言:javascript
复制
 movies.rename(columns=col_map).head()
  • 原理

DataFrame上的.rename方法允许重命名列标签。可以通过给列属性赋值来重命名列。接下来将显示如何通过赋值给.column属性进行重命名。

  • 扩展

在此处,更改了列名称。还可以使用.rename方法重命名索引,如果列是字符串值,则更有意义。

因此,我们可以将索引设置为movie_title(电影片名)列,然后将这些值映射为新值。

代码语言:javascript
复制
 idx_map = {
  "Avatar": "Ratava",
  "Spectre": "Ertceps",
  "Pirates of the Caribbean: At World's End": "POC",
 }
 col_map = {
  "aspect_ratio": "aspect",
  "movie_facebook_likes": "fblikes",
 }

  movies.set_index("movie_title")
  .rename(index=idx_map, columns=col_map)
  .head(3)

重命名行标签和列标签有多种方法。

可以将Python列表赋值给索引和列属性。当列表具有与行和列标签相同数量的元素时,此赋值有

以下代码就显示了这样一个示例

从CSV文件中读取数据,并使用index_col参数告诉Pandas将movie_title列用作索引。

在每个Index对象上使用.to_list方法来创建Python标签列表。

在每个列表中修改3个值,将这3个值重新赋值给.index和.column属性。

代码语言:javascript
复制
 movies = pd.read_csv(
  "data/movie.csv", index_col="movie_title"

 ids = movies.index.to_list()
 columns = movies.columns.to_list()

# 使用列表赋值重命名行和列标签

代码语言:javascript
复制
 ids[0] = "Ratava"
 ids[1] = "POC"
 ids[2] = "Ertceps"
 columns[1] = "director"
 columns[-2] = "aspect"
 columns[-1] = "fblikes"
 movies.index = ids
 movies.columns = columns
 movies.head(3)

另一种选择是将一个函数传递给.rename方法。该函数接收一个列名称并返回一个新名称。假设列中有空格和大写字母,则此代码将清除它们。

代码语言:javascript
复制
 def to_clean(val):
     return val.strip().lower().replace(" ", "_")

 movies.rename(columns=to_clean).head(3)

在某些Pandas代码中,还可以看到用于清除列名的列表推导式。使用新的清除列表,可以将结果重新赋值给.columns属性。假设列中有空格和大写字母,此代码将清除它们。

代码语言:javascript
复制
 cols = [
  col.strip().lower().replace(" ", "_")
  for col in movies.columns
 ]
 movies.columns = cols
 movies.head(3) 

因为此代码更改了原始DataFrame,所以可以考虑使用.rename方法。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-08-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 五分钟学大数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档