Escoger elementos basados en el complemento de índices en pandas Python
Tengo un marco de datos en el que selecciono dos subconjuntos dfs,df_a
ydf_b
. Por ejemplo eniris
conjunto de datos
df_a = iris[iris.Name == "Iris-setosa"]
df_b = iris[iris.Name == "Iris-virginica"]
¿Cuál es la mejor manera de obtener todos los elementos deiris
que tampoco están endf_a
ni endf_b
? Prefiero no referirme a las condiciones originales que definen.df_a
ydf_b
. Solo asumo quedf_a
ydf_b
son subconjuntos deiris
, así que me gustaría sacar elementos deiris
basado en los índices dedf_a
ydf_b
. Básicamente, asuma que:
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
# ...
EDITAR: Aquí hay una solución que parece ineficiente y poco elegante, y estoy seguro de que los pandas tienen una mejor manera:
# 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)]
Y una segunda:
df_rest = iris.ix[iris.index - df_a.index - df_b.index]
¿Cómo se puede hacer esto de manera más eficiente / elegante en los pandas? Gracias.