Pandasで2列を比較してTrue/Falseの新たな列を作る。さらに1/0へのマッピング

[最終更新] 2018年7月28日

Pythonの便利なデータフレームのライブラリPandasを使って、2列の値を比較してTrue/Falseの新たな1列を作るやり方のメモ。また、他のシステムとの連携ではTrue/Falseじゃなくて1/0(or 0/1)が必要だったりするので、そのマッピングについても。

環境

  • python 3.7.0
  • panda 0.23.3

2列の比較

以下のようなcsvを用意する。

a,b
0,0
0,1
1,0
1,1

これを読み込んで、データフレームdfの列名aと列名bについて比較し、同値であればTrue、異なる値であればFalseをなる列cを新たに作る。

>>> import pandas as pd
>>> df = pd.read_csv('test.txt')
>>> df
   a  b
0  0  0
1  0  1
2  1  0
3  1  1
>>> df['c'] = (df['a'] == df['b'])
>>> df['c']
0     True
1    False
2    False
3     True
Name: c, dtype: bool

これで、True、Falseで構成された列cが作られた。

True/False -> 1/0 のマッピング

Pythonにおいては、Trueは1でFalseは0。したがって、以下のように変換できる。

>>> df['c'] = df['c'].astype(int)
>>> df['c']
0    1
1    0
2    0
3    1

True/Falseを1/0じゃなくて0/1にしたい場合は、最初のdf[‘a’] == df[‘b’]をdf[‘a’] != df[‘b’]にしたらよいだろう。

以上。

参考

ありがとうございました。

関連記事

スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です