题目
DataFrame students
+-------------+--------+
| Column Name | Type |
+-------------+--------+
| id | int |
| first | object |
| last | object |
| age | int |
+-------------+--------+
编写一个解决方案,按以下方式重命名列:
id重命名为student_idfirst重命名为first_namelast重命名为last_nameage重命名为age_in_years
返回结果格式如下示例所示。
示例 1:
输入:
+----+---------+----------+-----+
| id | first | last | age |
+----+---------+----------+-----+
| 1 | Mason | King | 6 |
| 2 | Ava | Wright | 7 |
| 3 | Taylor | Hall | 16 |
| 4 | Georgia | Thompson | 18 |
| 5 | Thomas | Moore | 10 |
+----+---------+----------+-----+
输出:
+------------+------------+-----------+--------------+
| student_id | first_name | last_name | age_in_years |
+------------+------------+-----------+--------------+
| 1 | Mason | King | 6 |
| 2 | Ava | Wright | 7 |
| 3 | Taylor | Hall | 16 |
| 4 | Georgia | Thompson | 18 |
| 5 | Thomas | Moore | 10 |
+------------+------------+-----------+--------------+
解释:
列名已相应更换。
解题方案
1、审题,理解题意
题目意思有一个名为 students 的 DataFrame,它包含学生数据。但是,列名并不具有很强的描述性,要对列名进行更名。
2、解题思路
这时我们可以用pandas库中的rename函数来重命名列。先来学习下rename函数:
rename函数: 在 pandas 中rename函数在涉及到重命名列名或索引名时是一个非常有用的工具。rename用法: DataFrame.rename(mapper=None, index=None, columns=None, axis=None, copy=True, inplace=False, level=None, errors='raise')。rename方法有许多可选的参数。出于我们的目的,我们感兴趣的是 columns 参数,它允许您传递一个字典,其中键表示当前列名,值表示新列名。
参数定义:
-
mapper,index,columns:可以传递以重命名索引或列的词典。在我们的示例中,我们使用columns。 -
axis: 可以是 "index" 或 "columns"。确定是重命名索引还是重命名列。默认情况下,如果您提供 columns 参数,您将重命名列。 -
copy: 如果设置为True,则创建一个新的DataFrame。如果为False,则修改原始 DataFrame。 -
inplace: 如果设置为True,则重命名会原地修改DataFrame,不会返回任何内容。如果为False,则在不修改原有DataFrame的情况下,返回一个新的带有更名列的DataFrame。 -
level: 对于具有多级索引的DataFrame,应当重命名标签的级别。 -
errors: 如果是raise,如果尝试重命名不存在的项,则会引发错误。如果设置为ignore,任何重命名项目的失败都将被忽略。代码实现步骤:
-
import pandas as pd #首先导入 pandas 库,并给它起一个别名 pd。
-
def renameColumns(students: pd.DataFrame) -> pd.DataFrame: #我们定义了一个函数
renameColumns,该函数接受 DataFramestudents并返回修改后的 DataFrame。 -
在该函数中,我们对
students使用rename方法来重命名列。我们将一个词典传递给columns参数,以指定每个列的新名称。
students = students.rename( columns={ "id": "student_id", "first": "first_name", "last": "last_name", "age": "age_in_years", } )
- return students #然后返回修改后的 DataFrame。
请记住,此函数不会更改原始的 DataFrame,而是返回一个新的 DataFrame,其中包含重命名的列。如果您希望修改原有的 DataFrame,可以在调用 rename 方法时将 inplace 参数设置为True。
3、代码实现
import pandas as pd
def renameColumns(students: pd.DataFrame) -> pd.DataFrame:
students = students.rename(
columns={
"id": "student_id",
"first": "first_name",
"last": "last_name",
"age": "age_in_years",
}
)
return students