对于MultiIndex没有实现很多功能,可以查看this。
您需要先将MultiIndex 转换为DataFrame MultiIndex.to_frame:
#W-B sample
idx=pd.MultiIndex.from_tuples([(np.nan,1),(1,1),(1,2)])
print (idx.to_frame())
0 1
NaN 1 NaN 1
1 1 1.0 1
2 1.0 2
print (idx.to_frame().isnull())
0 1
NaN 1 True False
1 1 False False
2 False False
或者使用DataFrame构造函数:
print (pd.DataFrame(list(idx.tolist())))
0 1
0 NaN 1
1 1.0 1
2 1.0 2
因为:
print (pd.isnull(idx))
NotImplementedError: isna 没有为 MultiIndex 定义
编辑:
要检查每行至少一个True,请使用any 和boolean indexing:
df = idx.to_frame()
print (df[df.isna().any(axis=1)])
0 1
NaN 1 NaN 1
也可以过滤MultiIndex,但必须加MultiIndex.remove_unused_levels:
print (idx[idx.to_frame().isna().any(axis=1)].remove_unused_levels())
MultiIndex(levels=[[], [1]],
labels=[[-1], [0]])