[パンダ] IndexingError:インデクサーとして提供される整列不可能なブールシリーズ
Indexingerror
エラーの例:
import pandas as pd import numpy as np df = pd.DataFrame({'a':[1,2,np.nan,np.nan], 'b':[4,np.nan,6,np.nan], 'c':[np.nan, 8,9,np.nan], 'd':[np.nan,np.nan,np.nan,np.nan]}) df = df[df.notnull().any(axis = 0)] print df
完全なエラー:
IndexingError:インデクサーとして提供された整列不可能なブールシリーズ(ブールシリーズとインデックス付きオブジェクトのインデックスが一致しません
この問題は、シリーズインデックス列が整列されていないために発生します
df []は、列インデックスではなく行ベースのインデックスを探しています
解決:
# Using the loc function print (df.notnull().any(axis = 0)) a True b True c True d False dtype: bool df = df.loc[:, df.notnull().any(axis = 0)]
または、行ラベルを変更して[]で選択します
print (df.columns[df.notnull().any(axis = 0)]) Index(['a', 'b', 'c'], dtype='object') df = df[df.columns[df.notnull().any(axis = 0)]] print (df)
または
print (df.dropna(axis=1, how='all'))