今回は、pandasデータフレームの値を条件によって変更する方法を紹介する。

サンプルデータフレームの用意

まずはサンプルデータフレームを用意しよう。

import pandas as pd

df = pd.DataFrame({
    'count': [0, 4, 5, 2, 1],
    'flg': [0, 0, 0, 0, 0]
}, index=['A', 'B', 'C', 'D', 'E'])

#    count  flg
# A      0    0
# B      4    0
# C      5    0
# D      2    0
# E      1    0

このデータフレームのうち、count列の値が4以上のデータに対し、flgを1にするという作業を行なっていく。

pandasのwhere関数

このような条件分岐の場合、pandasのwhere関数を使うのがシンプルだろう。

df['flg'] = df['flg'].where(df['count'] < 4, 1)

#    count  flg
# A      0    0
# B      4    1
# C      5    1
# D      2    0
# E      1    0

今回はflg列が変更対象となるので、df[‘flg’]に対しwhere関数を実行する。

where関数の第一引数には条件を指定、条件がTrueの場合は元の値のまま、Falseの場合は第二引数に指定した値により更新が行われる。

上記のコードを実行すると「countが4以上の場合、flgに1を設定」という、目的どおりの結果が得られる。