如何用Python的pandas库查询指定数据

162 阅读2分钟

题目

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 的学生的名字和年龄。

DataFrameloc 属性是 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"]]   

4、执行结果

image-20231025065952727