作为索引器提供的不可对齐的布尔系列

Unalignable boolean Series provided as indexer

我正在尝试将数据框过滤为:

a= a[~(b['var1'].isin(c['var2']))]

但出现以下错误:

"Unalignable boolean Series provided as "
pandas.core.indexing.IndexingError: Unalignable boolean Series provided as indexer (index of the boolean Series and of the indexed object do not match).

我理解声明:

print(~(b['var1'].isin(c['var2'])) [:10])

正在返回一个布尔掩码系列,这可能是不可接受的。所以,我尝试将 loc 用作:

a= a.loc[:, ~(b['var1'].isin(c['var2']))]

但我遇到了同样的错误。我在这里错过了什么?如有任何意见,我们将不胜感激。

谢谢

错误意味着 a 和使用 isin 创建的掩码的索引不同,这意味着 b.

的索引不同
mask = ~(b['var1'].isin(c['var2']))

所以可能的解决方案是通过 a.index 更改索引,对于不匹配的值添加 Falses:

a[mask.reindex(a.index, fill_value=False)]

或者:

a[~(b['var1'].reindex(a.index, fill_value=False).isin(c['var2']))]