根据Python pandas中的索引补充挑选元素

8 python numpy pandas

我有一个数据帧,我从中选择两个子集dfs,df_adf_b.例如在iris数据集中:

df_a = iris[iris.Name == "Iris-setosa"]
df_b = iris[iris.Name == "Iris-virginica"]
Run Code Online (Sandbox Code Playgroud)

获得所有元素的最佳方法iris是既不在df_a也不在df_b?我不想参考定义的原始条件df_adf_b.我只是假设df_adf_b是的子集iris,所以我想拔出从要素iris基础上的指数df_adf_b.基本上,假设:

df_a = get_a_subset(iris)
df_b = get_b_subset(iris)
# retrieve the subset of iris that 
# has all elements not in df_a or in df_b
# ...
Run Code Online (Sandbox Code Playgroud)

编辑:这是一个看似低效和不优雅的解决方案,我敢肯定大熊猫有更好的方法:

# get subset of iris that is not in a nor in b
df_rest = iris[map(lambda x: (x not in df_a.index) & (x not in df_b.index), iris.index)]
Run Code Online (Sandbox Code Playgroud)

第二个:

df_rest = iris.ix[iris.index - df_a.index - df_b.index]
Run Code Online (Sandbox Code Playgroud)

如何在熊猫中最有效/优雅地完成这项工作?谢谢.

Zel*_*ny7 13

这似乎比你的第二个解决方案快一点.使用以下索引进行索引时会产生更多开销.ix:

df[~df.index.isin(df_a.index+df_b.index)]
Run Code Online (Sandbox Code Playgroud)