Pandas — filtrowanie trzema sposobami

Załóżmy prosty DataFrame:

import pandas as pd

df = pd.DataFrame({
    "city": ["WAW","WRO","KRK","GDA","POZ"],
    "temp": [23, 25, 21, 19, 24],
    "rain": [False, True, False, True, False]
})
df
city temp rain
0 WAW 23 False
1 WRO 25 True
2 KRK 21 False
3 GDA 19 True
4 POZ 24 False

1) Filtrowanie maską bool (najczęstsze)

hot = df["temp"] >= 23
df[hot]
city temp rain
0 WAW 23 False
1 WRO 25 True
4 POZ 24 False

2) .query() — czytelne warunki jako string

df.query("temp >= 23 and rain == False")
city temp rain
0 WAW 23 False
4 POZ 24 False

3) .loc — jawnie po wierszach/kolumnach

df.loc[df["temp"].ge(23) & ~df["rain"], ["city", "temp"]]
city temp
0 WAW 23
4 POZ 24

Mini-zadanie ✅

Wyfiltruj miasta, w których nie pada i temperatura jest poniżej 24, zwracając tylko kolumny city i temp.

# TODO: napisz filtr na 2 różne sposoby (maską i .query())
# 1) maska bool:
# ...

# 2) query():
# ...