ITいろいろ

プログラミングやクラウド、データ解析など、ITにかかわることをいろいろと書いています。

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を使う場合は &, |, ~を使います。

これさえ分かっていれば何も難しくはないのですが、知らないとエラーも不親切なため、原因究明が難しいです。