我有一个数据帧,从中选择两个子集df,df_a
和df_b
。例如在iris
数据集中:
df_a = iris[iris.Name == "Iris-setosa"]
df_b = iris[iris.Name == "Iris-virginica"]
获得iris
中既不在df_a
中也不在df_b
中的所有元素的最佳方法是什么?我不喜欢引用定义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
编制索引时会有更多的开销:相关问题 更多 >
编程相关推荐