题目
DataFrame students
+-------------+--------+
| Column Name | Type |
+-------------+--------+
| student_id | int |
| name | object |
| age | int |
+-------------+--------+
编写一个解决方案,选择 student_id = 101 的学生的 name 和 age 并输出。
返回结果格式如下示例所示。
示例 1:
输入:
+------------+---------+-----+
| student_id | name | age |
+------------+---------+-----+
| 101 | Ulysses | 13 |
| 53 | William | 10 |
| 128 | Henry | 6 |
| 3 | Henry | 11 |
+------------+---------+-----+
输出:
+---------+-----+
| name | age |
+---------+-----+
| Ulysses | 13 |
+---------+-----+
解释:
学生 Ulysses 的 student_id = 101,所以我们输出了他的 name 和 age。
解决方案
1、审题,理解题意
题目提供了一个 pandas DataFrame表,表中有若干条数据,每条数据有三个属性,分别为ID,name和age,要求返回 DataFrame表中id为101的name和age。
先来温习下DataFrame:类似于电子表格或 SQL 表格的二维表结构。每一行代表一个单独的记录,每一列代表一个不同的属性。它是可变大小的,旨在处理不同类型的数据的混合。
2、解题思路
题目中我们接受一个 DataFrame 和一个 student_id 作为输入。然后,我们使用 loc 方法和一个布尔遮罩(在这种情况下,它是 df['student_id'] == student_id)来选择我们要的行和列。返回的结果是一个 DataFrame,它只包含指定 student_id 的学生的名字和年龄。
DataFrame 的 loc 属性是 pandas 库中的一个功能,它用于基于标签的数据选择。使用 loc,你可以通过行和列的标签来访问 DataFrame 中的数据。这是一个非常方便的方法,特别是当你知道你想要的特定行和列的标签时。对于题目我们将使用 loc 函数来选择 student_id 为 101 的行,并从 name 和 age 列返回值。为此我们必须为 loc 提供两个参数。students.loc[students['student_id'] == 101, ['name', 'age']]
boolean 遮罩: 一系列 True/False 值,用于根据特定条件从另一个数据结构(如列表、数组或 DataFrame)中筛选或选择元素。
3、代码实现
import pandas as pd
def selectData(students: pd.DataFrame) -> pd.DataFrame:
return students.loc[students["student_id"] == 101, ["name", "age"]]