Pandas filter under flere forhold

Pandas filter under flere forhold

Den mest populære dataframemanipulasjonen i pandaer er filtrering. I dette innlegget skal vi se på hvordan du bruker flere forhold til å filtrere en Pandas dataaframe. I pandaer er det flere metoder for å trekke ut data fra Dataframe ved å bruke flere forhold. I de følgende eksempler vil vi demonstrere hvordan du bruker forskjellige funksjoner for å filtrere DataFrame ved å bruke flere forhold.

Metode 1: Bruke eval ()

eval () brukes til å evaluere et uttrykk. Så det vil fungere som et filter i DataFrame og returnere radene som samsvarer med tilstanden.

Syntaks

Pandas.DataFrame_Object [DataFrame_Object.eval (“Betingelser”)]

Eksempel 1

La oss opprette en dataaframe med 6 kolonner og 4 rader og returnere radene basert på gebyrkolonnen der ID er større enn 20, og navnet slutter med "N".

Importer pandaer
Importer numpy
Merknader = Pandas.DataFrame ([[23, 'Sravan', 'Pass', 1000,34,56],
[21, 'Siva', 'Fail', 400,32,45],
[20, 'Sahaja', 'pass', 100,78,90],
[22, 'Suryam', 'Fail', 450,76,56]
], kolonner = ['Id', 'Navn', 'Status', 'Fee', 'Points1', 'Points2'])
trykk (kommentarer)
skrive ut()
# Returner radene basert på gebyrkolonnen der ID er større enn 20 og navnet avsluttes med "N".
trykk (Merknader [Merknader.eval (“Id> 20 & navn.str.Endswith ('n').verdier ”)))

Produksjon

ID -navn Status Fee Points1 Points2
0 23 Sravan Pass 1000 34 56
1 21 Siva Fail 400 32 45
2 20 Sahaja pass 100 78 90
3 22 Suryam Fail 450 76 56
ID -navn Status Fee Points1 Points2
0 23 Sravan Pass 1000 34 56

Det er bare en rad slik at navnet ender med 'n', og IDen er større enn 20. Her spesifiserte vi to betingelser ved å bruke “og” -operatøren.

Eksempel 2

Returner radene basert på kolonnen 'avgift' der ID er større enn 20 og 'Points1' er mindre enn 35, og navnet starter med 'S'.

Importer pandaer
Importer numpy
Merknader = Pandas.DataFrame ([[23, 'Sravan', 'Pass', 1000,34,56],
[21, 'Siva', 'Fail', 400,32,45],
[20, 'Sahaja', 'pass', 100,78,90],
[22, 'Suryam', 'Fail', 450,76,56]
], kolonner = ['Id', 'Navn', 'Status', 'Fee', 'Points1', 'Points2'])
# Returner radene basert på gebyrkolonnen der ID er større enn 20 og starter med "S" og poeng1 mindre enn 35.
trykk (Merknader [Merknader.eval ("id> 20 & navn.str.Startswith ('s').Verdier og poeng1 < 35")])

Produksjon

ID -navn Status Fee Points1 Points2
0 23 Sravan Pass 1000 34 56
1 21 Siva Fail 400 32 45

To rader samsvarer med tilstanden.

Metode 2: Bruke loc []

Syntaks

DataFrame_Object.loc []

Parameter

Indeksetikett: Liste over strenger eller en enkelt streng av radens indeksnavn.

Eksempel 1

Lag en DataFrame som heter 'Merknader' med 6 kolonner. La oss returnere radene basert på gebyrkolonnen der gebyret er større enn 300 og poeng2 mindre enn 76.

Importer pandaer
Merknader = Pandas.DataFrame ([[23, 'Sravan', 'Pass', 1000,34,56],
[21, 'Siva', 'Fail', 400,32,45],
[20, 'Sahaja', 'pass', 100,78,90],
[22, 'Suryam', 'Fail', 450,76,56]
], kolonner = ['Id', 'Navn', 'Status', 'Fee', 'Points1', 'Points2'])
# Vis DataFrame - Merknader
trykk (kommentarer)
skrive ut()
# Returner radene basert på gebyrkolonnen der gebyret er større enn 300 og poeng2 mindre enn 76
trykk (kommentarer.Loc [(Merknader ['Fee']> 300) & (Merknader ['Points2'] < 76)])

Produksjon

ID -navn Status Fee Points1 Points2
0 23 Sravan Pass 1000 34 56
1 21 Siva Fail 400 32 45
2 20 Sahaja pass 100 78 90
3 22 Suryam Fail 450 76 56
ID -navn Status Fee Points1 Points2
0 23 Sravan Pass 1000 34 56
1 21 Siva Fail 400 32 45
3 22 Suryam Fail 450 76 56

Det er 3 rader der gebyret er større enn 300 og poeng2 mindre enn 76. Her spesifiserte vi to betingelser med '&' -operatøren.

Eksempel 2:

Lag en DataFrame som heter 'Merknader' med 6 kolonner. La oss returnere radene basert på gebyrkolonnen der gebyret er større enn 300 og poeng2 mindre enn 76.

Importer pandaer
Merknader = Pandas.DataFrame ([[23, 'Sravan', 'Pass', 1000,34,56],
[21, 'Siva', 'Fail', 400,32,45],
[20, 'Sahaja', 'pass', 100,78,90],
[22, 'Suryam', 'Fail', 450,76,56]
], kolonner = ['Id', 'Navn', 'Status', 'Fee', 'Points1', 'Points2'])
# Returner radene basert på gebyrkolonnen der gebyret er større enn 300 og poeng2 mindre enn 76, og statusen er "mislykkes".
trykk (kommentarer.Loc [(Merknader ['Fee']> 300) & (Merknader ['Points2'] < 76) & (remarks['status'] == 'fail')])

Produksjon

ID -navn Status Fee Points1 Points2
1 21 Siva Fail 400 32 45
3 22 Suryam Fail 450 76 56

Det er 2 rader der gebyret er større enn 300 og poeng2 større enn 76, og statusen er 'mislykkes'. Her spesifiserte vi tre betingelser med '&' -operatøren.

Metode 3: Bruke spørring ()

spørring () vil ta tilstanden som et uttrykk slik at rader blir filtrert i DataFrame basert på uttrykket som er gitt. Forsikre deg om at du trenger å skrive et uttrykk i "".

Syntaks

Pandas.DataFrame_Object.spørring (“uttrykk”)

Eksempel

La oss returnere radene basert på gebyrkolonnen der gebyret er større enn 300 og poeng2 mindre enn 76.

Importer pandaer
Merknader = Pandas.DataFrame ([[23, 'Sravan', 'Pass', 1000,34,56],
[21, 'Siva', 'Fail', 400,32,45],
[20, 'Sahaja', 'pass', 100,78,90],
[22, 'Suryam', 'Fail', 450,76,56]
], kolonner = ['Id', 'Navn', 'Status', 'Fee', 'Points1', 'Points2'])
# Returner radene basert på gebyrkolonnen der gebyret er større enn 300 og poeng2 mindre enn 76
trykk (kommentarer.spørring ("gebyr> 300 og poeng2 < 76"))

Produksjon

ID -navn Status Fee Points1 Points2
0 23 Sravan Pass 1000 34 56
1 21 Siva Fail 400 32 45
3 22 Suryam Fail 450 76 56

Det er 3 rader der gebyret er større enn 300 og poeng2 mindre enn 76. Her spesifiserte vi to betingelser ved bruk av 'og' operatøren.

Konklusjon

Filtrering er den oftest brukte DataFrame -operasjonen i pandaer. I denne guiden diskuterte vi hvordan du filtrerer DataFrame ved å bruke flere forhold. Etter å ha dekket denne artikkelen, kan det hende du kan filtrere dataene ved å bruke flere forhold selv. Vi implementerte noen få eksempler i denne artikkelen for å lære deg hvordan du henter ut data fra DataFrame ved hjelp av flere forhold ved å bruke de forskjellige funksjonene i Pandas og Numpy som Loc [], Query () og Eval ().