基于Python索引补码的元素提取
我有一个数据帧,从中我选择了两个子集df,基于Python索引补码的元素提取,python,numpy,pandas,Python,Numpy,Pandas,我有一个数据帧,从中我选择了两个子集df,df_a和df_b。例如,在iris数据集中: df_a = iris[iris.Name == "Iris-setosa"] df_b = iris[iris.Name == "Iris-virginica"] 获取既不在dfu a中也不在df_b中的iris的所有元素的最佳方法是什么?我不想提及定义了df_a和df_b的原始条件。我只是假设df_a和df_b是iris的子集,所以我想根据df_a和df_b的索引从iris中提取元素。基本上,假设:
df_a
和df_b
。例如,在iris
数据集中:
df_a = iris[iris.Name == "Iris-setosa"]
df_b = iris[iris.Name == "Iris-virginica"]
获取既不在dfu a
中也不在df_b
中的iris的所有元素的最佳方法是什么?我不想提及定义了df_a
和df_b
的原始条件。我只是假设df_a
和df_b
是iris
的子集,所以我想根据df_a
和df_b
的索引从iris
中提取元素。基本上,假设:
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
# ...
编辑:这里有一个看似低效且不雅观的解决方案,我相信熊猫有更好的方法:
# 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)]
第二个:
df_rest = iris.ix[iris.index - df_a.index - df_b.index]
如何在熊猫身上最有效/优雅地完成这项工作?谢谢。这似乎比您的第二个解决方案快一点。使用.ix
索引时,开销会稍微大一些:
df[~df.index.isin(df_a.index+df_b.index)]
看看这个问题,它可能会给你一些好的答案