indexar un marco de datos de Python Pandas con múltiples condiciones de SQL como la declaración donde

Tengo experiencia en R y nuevo en Python Pandas. Estoy tratando de indexar un DataFrame para recuperar filas que cumplan con un conjunto de varias condiciones lógicas, muy parecido a la declaración "where" de SQL.

Sé cómo hacerlo en R con marcos de datos (y con el paquete data.table de R, que es más parecido a un marco de datos de Pandas que al marco de datos nativo de R).

Aquí hay un código de ejemplo que construye un DataFrame y una descripción de cómo me gustaría indexarlo. ¿Hay una forma fácil de hacer esto?

import pandas as pd
import numpy as np

# generate some data
mult = 10000
fruits = ['Apple', 'Banana', 'Kiwi', 'Grape', 'Orange', 'Strawberry']*mult
vegetables = ['Asparagus', 'Broccoli', 'Carrot', 'Lettuce', 'Rutabaga', 'Spinach']*mult
animals = ['Dog', 'Cat', 'Bird', 'Fish', 'Lion', 'Mouse']*mult
xValues = np.random.normal(loc=80, scale=2, size=6*mult)
yValues = np.random.normal(loc=79, scale=2, size=6*mult)

data = {'Fruit': fruits,
        'Vegetable': vegetables, 
        'Animal': animals, 
        'xValue': xValues,
        'yValue': yValues,}

df = pd.DataFrame(data)

# shuffle the columns to break structure of repeating fruits, vegetables, animals
np.random.shuffle(df.Fruit)
np.random.shuffle(df.Vegetable)
np.random.shuffle(df.Animal)

df.head(30)

# filter sets
fruitsInclude = ['Apple', 'Banana', 'Grape']
vegetablesExclude = ['Asparagus', 'Broccoli']

# subset1:  All rows and columns where:
#   (fruit in fruitsInclude) AND (Vegetable not in vegetablesExlude)

# subset2:  All rows and columns where:
#   (fruit in fruitsInclude) AND [(Vegetable not in vegetablesExlude) OR (Animal == 'Dog')]

# subset3:  All rows and specific columns where above logical conditions are true.

¡Toda la ayuda y aportaciones son bienvenidas y muy apreciadas!

Gracias randall

Respuestas a la pregunta(1)

Su respuesta a la pregunta