Indizieren Sie einen Python Pandas-Datenframe mit SQL mit mehreren Bedingungen, z. B. where-Anweisung

Ich habe Erfahrung in R und bin neu bei Python Pandas. Ich versuche, einen DataFrame zu indizieren, um Zeilen abzurufen, die mehrere logische Bedingungen erfüllen - ähnlich wie die "where" -Anweisung von SQL.

Ich weiß, wie man dies in R mit Datenrahmen (und mit dem data.table-Paket von R, das eher einem Pandas-Datenrahmen als dem nativen Datenrahmen von R ähnelt) macht.

Hier ist ein Beispielcode, der einen DataFrame erstellt, und eine Beschreibung, wie ich ihn indizieren möchte. Gibt es eine einfache Möglichkeit, dies zu tun?

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.

Alle Hilfe und Beiträge sind willkommen und werden sehr geschätzt!

Danke, Randall

Antworten auf die Frage(1)

Ihre Antwort auf die Frage