46日目に取り組んだ問題はこちら!
595. Big Countries
https:
問題文
Table: World
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| name | varchar |
| continent | varchar |
| area | int |
| population | int |
| gdp | bigint |
+-------------+---------+
name is the primary key (column with unique values) for this table.
Each row of this table gives information about the name of a country, the continent to which it belongs, its area, the population, and its GDP value.
A country is big if:
it has an area of at least three million (i.e., 3000000 km2), or
it has a population of at least twenty-five million (i.e., 25000000).
Write a solution to find the name, population, and area of the big countries.
Return the result table in any order.
僕の回答
import pandas as pd
def big_countries(world: pd.DataFrame) -> pd.DataFrame:
result = world[(world["area"] >= 3000000) | (world["population"] >= 25000000)]
return result[["name", "population", "area"]]
より効率の良い回答例
特になし
学んだこと
- フィルターや複数カラムを指定する方法などの復習を行えた
- 複数の条件でフィルターをかけるときは、
or
ではなく、|
で区切る必要があることを忘れていた -
or
について- 短絡評価を行い、左側のオペランドが真の場合、右側は評価されない
- 任意のデータ型に適用可能
-
|
について- ビットごとのOR操作、集合の和集合、辞書のマージなどに使用
- 短絡評価を行わず、常に両方のオペランドを評価する
- world["area"] >= 3000000 は、world データフレームの各行がこの条件を満たすかどうかを示すブール値のシリーズ(例: [True, True, False, ...])を生成する。複数の条件を組み合わせてフィルタリングを行う場合、それぞれの条件が独自のブールシリーズを作成する。そのため、これらのシリーズを要素ごとに論理的に結合するために
|
が使用される。
コメント
or
と|
の違いについて理解できていなかったから今回の問題を通して理解できてよかった。
次の問題はこちら!