我有这个索引数据框:
In [15]: df = pd.DataFrame({'a': [False, False, False], 'b': [True, False, False]}, index=['a', 'b', 'c'])
In [16]: df
Out[16]:
a b
a False True
b False False
c False False
我有相同尺寸的布尔掩码(非索引)数据帧:
In [17]: mask = pd.DataFrame({'a': [False, False, False], 'b': [True, False, False]})
In [18]: mask
Out[18]:
a b
0 False True
1 False False
2 False False
我想要像这样的子集:
In [19]: df.loc[~mask.any(axis=1)]
但是这会引发:
---------------------------------------------------------------------------
IndexingError Traceback (most recent call last)
<ipython-input-19-54eb24f8acdb> in <module>()
----> 1 df.loc[~mask.any(axis=1)]
…
IndexingError: Unalignable boolean Series provided as indexer (index of the boolean Series and of the indexed object do not match
在这种情况下,如何“忽略”索引?
答案 0 :(得分:1)
两个索引必须相同,所以工作:
mask.index = df.index
print (df.loc[~mask.any(axis=1)])
a b
b False False
c False False
或者使用来自John Galt注释的建议 - 转换为numpy数组 - 然后不使用索引值,因为不存在:
print (df.loc[~mask.any(axis=1).values])
a b
b False False
c False False