Menu
CoddyTech

筛选行

本课属于 Coddy Machine Learning 学习旅程的“数据与图表”单元。第 38 课,共 60 课。

很多查询只保留部分行:月租低于 1000 的公寓、年龄超过 60 岁的患者。对某一列进行比较,每行会得到 True 或 False,形成一个掩码:

公寓表及其掩码,月租低于 1000:第 0 行和第 4 行为 True,其余行为 False;第 0 行和第 4 行高亮显示为保留行,其余行淡化

flats = pd.DataFrame({
    "area": ["North", "Center", "East", "Center", "West"],
    "rooms": [2, 1, 3, 3, 2],
    "rent": [950, 1200, 1100, 1650, 800],
})
print(flats[flats["rent"] < 1000])

在表格的方括号中,掩码会保留值为 True 的行及其标签:

    area  rooms  rent
0  North      2   950
4   West      2   800

用 &(两者都满足)或 |(满足其一)组合条件,每个条件都放在自己的括号中,就像数组掩码一样:

print(flats[(flats["rooms"] >= 2) & (flats["rent"] < 1200)])

这会打印:

    area  rooms  rent
0  North      2   950
2   East      3  1100
4   West      2   800

文本也可以:flats["area"] == "Center"。而 .shape[0] 用来统计匹配的行数。

challenge icon

挑战

中等

一个徒步俱乐部将路线列表存储在 trails.csv 中,其中包含 trail、km 和 climb_m(爬升米数)这几列。程序会读取最长距离 max_km 和最小爬升高度 min_climb。

  1. 在 picked 中保留长度不超过 max_km 且爬升高度至少为 min_climb 米的路线。
  2. 打印 picked。
  3. 打印符合条件的路线数量,如下所示。

对于另一份路线列表:

        trail   km  climb_m
1  Bear Creek  6.0      300
5  Old Quarry  9.2      455
Trails that fit: 2

亲手试试

import pandas as pd

trails = pd.read_csv("trails.csv")
max_km = float(input())
min_climb = int(input())

# 在下方编写你的代码
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

数据与图表中的所有课

自己练习: Python 在线编译器