0
0

More than 1 year has passed since last update.

Python, pandas.isnull() での True/False判定

Posted at

ここ数ヶ月、Pythonでデータ集計・分析を始めましたsakaimoです。
さっそく空文字の判定でミスりましたのでメモっておきます。

  • 前処理として特定の列には「文字列あるいは空文字」が入ってることは保証されている状態。
  • そこの値が「空文字」かどうかの判定をさせたい。
test_df = pd.DataFrame(
    data={'文字列が入る列': pd.Series(['a', '', 'c'])}
)
print(test_df)
print("--------")

moji = test_df.iloc[1,0]

# 何も表示されない。空文字なので期待値通り。
print("moji: " + moji)

# Falseになる。pandasのisnull()では「空文字」は「欠損値ではない」。欠損値とはNaNとかNaneのこと。
print("pd.isnull(moji): " + str(pd.isnull(moji))) 

# Falseになる。pythonの仕様では 空文字はFalse判定
print("not moji: " + str(bool(moji))) 
出力
  文字列が入る列
0       a
1        
2       c
--------
moji: 
pd.isnull(moji): False
not moji: False

私は下記のように書いていて、なんでここに来ないの?ってしばらく考えちゃいました。

if pd.isnull(moji):
  print("空文字だったときの処理") # ←ダメな例

当たり前なのですが、その言語仕様やライブラリによって「何がTrue/Falseと判定されるのか」をちゃんと調べなきゃダメですね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0