fly*_*our 4 python filtering pandas
我正在尝试将数据框过滤为:
a= a[~(b['var1'].isin(c['var2']))]
Run Code Online (Sandbox Code Playgroud)
但出现以下错误:
"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).
Run Code Online (Sandbox Code Playgroud)
我理解该声明:
print(~(b['var1'].isin(c['var2'])) [:10])
Run Code Online (Sandbox Code Playgroud)
返回一个布尔掩码的系列,这可能是不可接受的。所以,我尝试将 loc 用作:
a= a.loc[:, ~(b['var1'].isin(c['var2']))]
Run Code Online (Sandbox Code Playgroud)
但我遇到了同样的错误。我在这里缺少什么?任何意见将不胜感激。
谢谢
a错误意味着和 创建的掩码索引不同isin,这意味着 的索引不同b。
mask = ~(b['var1'].isin(c['var2']))
Run Code Online (Sandbox Code Playgroud)
因此,可能的解决方案是更改索引,a.index并且对于不匹配的值添加Falses:
a[mask.reindex(a.index, fill_value=False)]
Run Code Online (Sandbox Code Playgroud)
或者:
a[~(b['var1'].reindex(a.index, fill_value=False).isin(c['var2']))]
Run Code Online (Sandbox Code Playgroud)