複数の条件をかつで組み合わせる方法

まずは、2つの条件を「かつ」で組み合わせる方法を学びます。
「条件1、かつ、条件2」は、&を使って次のように書けます。

(条件1) & (条件2)

Pythonではブール値の「かつ」にandを使いますが、pandasの絞り込みでは&を使うことに注意してください。

()を付けるのは、>=などの比較演算子より、&のビット演算子の方が優先順位が高いためです。
pandasの条件でビット演算子を使う場合は、比較演算子の方に括弧をつけるようにしましょう。

なお、df[(条件1) and (条件2)]のように&の代わりにandを使ってもValueErrorになります。

※ 前問で学んだ~同様、&もビット演算子です。

NameHeightWeight
0佐藤17253
1田中16050
2鈴木16558
3長谷川16065

「Weightが55以上、かつ、Heightが160以下」の行は以下のように取得できます。括弧が必要です。

df[(df.Weight >= 55) & (df.Height <= 160)]

Name
HeightWeight
3長谷川16065
  • 1行目:「53 >= 55 and 172 <= 160」は、False
  • 2行目:「50 >= 55 and 160 <= 160」は、False
  • 3行目:「58 >= 55 and 165 <= 160」は、False
  • 4行目:「65 >= 55 and 160 <= 160」は、True

(df.Weight >= 55) & (df.Height <= 160)は、[False, False, False, True]をデータとするSeriesになります。

&を使って更新もできます。

df[(df.Weight >= 55) & (df.Height <= 160)] = [["中川", 161, 67]]
df
NameHeightWeight
0佐藤17253
1田中16050
2鈴木16558
3中川16167

4行目が更新されています。

# 複数の条件式を使う場合でも、どちらの書き方も可能
df.loc[(条件1) & (条件2)]  # locを使う書き方
df[(条件1) & (条件2)]  # locを使わない書き方

コメント

タイトルとURLをコピーしました