LoginSignup
1
0

More than 3 years have passed since last update.

Unalignable boolean Series provided as indexerとなったときの対応方法

Posted at

事象 : notnaでNaNではないインデックスでデータを抽出しようとしたら怒られた

  • 環境
    • macOS Catalina バージョン10.15.7
    • Python 3.8.5
    • pandas 1.1.3
import pandas

if __name__ == '__main__':
    df = pandas.read_csv('CSV.csv')
    print(df[df.query('名前 == "ぽんすけ"')['開始'].notna()])
エラーメッセージ
pandas.core.indexing.IndexingError: Unalignable boolean Series provided as indexer (index of the boolean Series and of the indexed object do not match).

原因 : 不明

抽出しようとしているDataFrameのインデックス分のインデックスがnotnaの結果にないから?
誰か教えて欲しい。

# 抽出しようとしているDataFrameのインデックスは0~39までの40ある
print(df)
#       名前  回数     開始     終了
# 0   ぽんすけ   1   9:00  18:00
# ...省略...
# 39  ぽんすけ  10    NaN    NaN

# notnaの結果のインデックスは抜け番がいっぱいで10しかない
print(df.query('名前 == "ぽんすけ"')['開始'].notna())
# 0      True
# 2      True
# 5      True
# 11     True
# 14    False
# 21     True
# 24     True
# 29    False
# 34     True
# 39    False
# Name: 開始, dtype: bool

notnaの結果のインデックスに合うDataFrameから抽出すればなんとかなりそう

# notnaの結果のインデックスに合うDataFrame
print(df.query('名前 == "ぽんすけ"'))
#       名前  回数     開始     終了
# 0   ぽんすけ   1   9:00  18:00
# 2   ぽんすけ   3   9:00  13:00
# 5   ぽんすけ   7  12:00    NaN
# 11  ぽんすけ   5   9:00    NaN
# 14  ぽんすけ   4    NaN    NaN
# 21  ぽんすけ   2  18:00    NaN
# 24  ぽんすけ   6  18:00    NaN
# 29  ぽんすけ   9    NaN  18:00
# 34  ぽんすけ   8  12:00    NaN
# 39  ぽんすけ  10    NaN    NaN

対応 : notnaの結果のインデックスに合うDataFrameから抽出する

import pandas

if __name__ == '__main__':
    df = pandas.read_csv('CSV.csv')
    ponsuke = df.query('名前 == "ぽんすけ"')
    print(ponsuke[ponsuke['開始'].notna()])
できた
      名前  回数     開始     終了
0   ぽんすけ   1   9:00  18:00
2   ぽんすけ   3   9:00  13:00
5   ぽんすけ   7  12:00    NaN
11  ぽんすけ   5   9:00    NaN
21  ぽんすけ   2  18:00    NaN
24  ぽんすけ   6  18:00    NaN
34  ぽんすけ   8  12:00    NaN
1
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
1
0