基于索引补集的大Pandas元素提取

2024-06-10 14:55:52 发布

您现在位置:Python中文网/ 问答频道 /正文

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

df_a = iris[iris.Name == "Iris-setosa"]
df_b = iris[iris.Name == "Iris-virginica"]

获得iris中既不在df_a中也不在df_b中的所有元素的最佳方法是什么?我不喜欢引用定义df_adf_b的原始条件。我只是假设df_adf_biris的子集,所以我想基于df_adf_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]

如何在熊猫身上做到最有效/最优雅?谢谢。


Tags: of数据方法namein元素irisdf