Pandasで必要な列だけを取り出す(複数の条件)
以前のブログで列のフィルタをかける方法を紹介しました。
今回はその応用で、複数の条件でフィルタをかける方法です。
簡単にできるかと思ったら結構ハマってしまったので、、紹介します。
データはこちらを使っています。
コード紹介
# インポート import pandas as pd import matplotlib.pyplot as plt # ファイルの取り込み df = pd.read_excel("05k2-3.xlsx", skiprows=3, skipfooter=3) # 人口区分が「総人口」かつ区分が「人口」かつ時間軸コードが2022000606かつ年齢階級が「うち」から始まらないものを抽出 df2 = df[(df['人口区分'] == '総人口') & (df['区分'] == '人口') & (df['時間軸コード'] == 2022000606) & ~(df['年齢階級'].str.startswith('うち'))] df2
出力結果
少し解説
通常PythonでAND条件、OR条件、NOT条件などを使うときはand
, or
, not
を使います。
例. if ( a == 1 and not(b < 3) )
ただ、Pandasを使う場合は &
, |
, ~
を使います。
これさえ分かっていれば何も難しくはないのですが、知らないとエラーも不親切なため、原因究明が難しいです。