PandasのNaNをif文で判定する
pandas
Lastmod: 2021-02-10

概要

Pandasを使うときに出てくるNaNをif文で判定する方法を紹介します。

準備

以下のcsvファイルがあると想定します。ここではtest.csvと名付けておきます。

name,age
田中,26
鈴木,41
佐藤,

pandasで読み込んでおきます。

import pandas as pd

df = read_csv('./test.csv')
print(df)

### 出力
#   name   age
# 0   田中  26.0
# 1   鈴木  41.0
# 2   佐藤   NaN

方法

pd.isnull() or pd.isna()

for i, r in df.iterrows():
    if pd.isnull(r["age"]): #pd.isna(r["age"])でも同じ
        print(r)

###出力
# name     佐藤
# age     NaN
# Name: 2, dtype: object

math.isnan()

import math

for i, r in df.iterrows():
    if math.isnan(r["age"]):
        print(r)

###出力
# name     佐藤
# age     NaN
# Name: 2, dtype: object

失敗例

なんも調べずにやった失敗例をご紹介します。。。

# そもそもNoneではないよね。。。
if r["age"] == None: 
if r["age"] is None: 
# あ、無理なんや。。。
import math
if r["age"] == math.nan:
if r["age"] is math.nan: