Pandasの学習を進める中で、df["列名"] > 値
のような記述をよく見かけます。
最初は「これって値そのものが返ってくるんじゃないの?」と不思議に思ったので、
自分用の学習メモとして、Series
とスカラー値の比較で返ってくる結果についてまとめておきます。
✅ 結論
PandasのSeries
とスカラー値(単一の数値や文字列)を比較すると、
各要素ごとの比較が行われ、結果として True
/ False
の一覧(Series型) が返ってきます。
✅ 比較演算子の基本
代表的な演算子と意味は次の通りです。
演算子 | 意味 | 使用例 |
---|---|---|
== |
等しい | series == 100 |
!= |
等しくない | series != "Tokyo" |
< |
より小さい | series < 50 |
<= |
以下 | series <= 100 |
> |
より大きい | series > 0 |
>= |
以上 | series >= 10 |
✅ 実行例:Seriesと数値を比較してみる
まずは、簡単なSeries
を作って、50
との比較を行ってみます。
import pandas as pd
s = pd.Series([80, 40, 60], index=["01", "02", "03"])
print(s)
01 80
02 40
03 60
dtype: int64
この状態で、50
より大きいかどうかを判定するとこうなります。
result = s > 50
print(result)
01 True
02 False
03 True
dtype: bool
このように、比較結果としてTrue/FalseのSeriesが返ってきます。
値そのもの(80や60)が返るのではなく、条件に合うかどうかの判定結果が返るという点がポイントです。
✅ これをどう使うのか?
このような「True/FalseのSeries」は、行を抽出するためのフィルタ条件として使えます。
たとえば次のように書けば、条件に合う値だけを取り出せます。
filtered = s[s > 50]
print(filtered)
01 80
03 60
dtype: int64
上記のように、s > 50
の結果をそのままフィルタとして使えば、Trueの位置にある値だけが取り出されるという仕組みです。
✅ 実務でもよく使う例
DataFrameのフィルタ処理でも同じように使えます。
df = pd.DataFrame({
"都市": ["東京", "ニューヨーク", "上海"],
"人口": [1400, 800, 2000]
}, index=["01", "02", "03"])
filtered_df = df[df["人口"] > 1000]
print(filtered_df)
都市 人口
01 東京 1400
03 上海 2000
このように、**行の抽出(条件抽出)**にも頻繁に使います。
✅ よくある誤解と注意点
-
df["C"] > 50
と書いても 値(80や60)が返ってくるわけではない - True/Falseが返ってくる → それを使って抽出するのが基本の流れ
-
=
は代入、==
は比較なので、書き間違いに注意
✅ まとめ表
式 | 結果の型 | 内容 |
---|---|---|
series > 50 |
Series[bool] | 各要素と50を比較し、True / False を返す |
series[series > 50] |
Series(値) | 条件を満たす値だけを抽出 |
df[df["列"] > 値] |
DataFrame | 条件を満たす行だけを抽出 |
✅ おわりに
この比較の仕組みは、Pandasでデータを扱ううえでの基本中の基本です。
仕組みを知っておくだけで、データ抽出や加工の理解がスムーズになると思いました。