[最終更新] 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’]にしたらよいだろう。
以上。
参考
ありがとうございました。
関連記事
Python の記事
- [2021年11月18日] GKE + Flask で REST API
- [2019年5月23日] SendGridのAPIでPythonライブラリ(6.0.5)を使って添付ファイルを送信する
- [2019年4月4日] C1801: Do not use len(SEQUENCE) to determine if a sequence is empty (len-as-condition)と怒られた時
- [2019年4月3日] Python + SendGrid API でメールを送信する
- [2018年8月21日] boto3でS3にアップロードした画像が、ブラウザで表示するとダウンロードされてしまう時
- ---本記事---
- [2018年7月20日] pythonのpipで入れているもの
- [2018年6月25日] cronのpythonスクリプト内にあるjson.dump()でensure_ascii=Falseにして日本語出力しようとしてハマった
- [2018年6月22日] pythonでRSSフィードを取得し、画像がない場合、リンク先の記事から拾う
- [2018年5月21日] pythonのmysqlclientでSSH越しにAWSのRDSにアクセス
- [2018年5月17日] matplotlibでx軸の時刻情報をフォーマットする
スポンサーリンク