Filtrer Pandas DataFrame-rader etter en liste over strenger i Python - trinn-for-trinn-veiledning

Prøv Instrumentet Vårt For Å Eliminere Problemer

Ved analyse av data i en Pandas DataFrame i Python vil du ofte filtrere DataFrame for kun å beholde rader som inneholder spesifikke verdier. En vanlig filtreringsoppgave er å filtrere rader basert på en liste over strenger du angir, og bare beholde radene som inneholder én eller flere strenger fra listen din.

I denne omfattende veiledningen lærer du flere metoder for å filtrere en Pandas DataFrame basert på en liste over strenger, inkludert:

  • Nøyaktige strengtreff
  • Delvis strengkamper
  • Uavhengig av store og små bokstaver
  • Matcher flere kolonner

Du finner Python-kodeeksempler for hver metode, samt detaljer om hvordan filtreringsoperasjonene fungerer under panseret. La oss komme i gang!



Oppsett

Vi vil først importere pandaer og lage en enkel DataFrame for å demonstrere filtreringsteknikkene:

|_+_|

Dette skriver ut:

|_+_|

La oss nå se ulike metoder for å filtrere radene basert på en liste over strenger.

Nøyaktig strengmatch

For å filtrere DataFrame til bare rader som inneholder eksakte treff av strenger fra en liste, kan du bruke |_+_| metode.

For eksempel, for å filtrere etter rader som har 'Hvit' eller 'Grå' farger:

|_+_|

Dette skriver ut rader med bare 'Hvit' og 'Grå' farger:

|_+_|

Den |_+_| metoden sjekker hver verdi i 'Farge'-kolonnen mot listen, og returnerer True hvis verdien er i listen, og False ellers. Den returnerte boolske serien brukes deretter til å dele opp DataFrame og beholde bare radene der |_+_| returnerte True.

Nøyaktig match ved hjelp av et sett

En alternativ tilnærming er å bruke et sett som har O(1) oppslagstid:

|_+_|

Dette kan være raskere for veldig store lister.

Delvis strengmatch

For delvise eller 'fuzzy' strengtreff kan du bruke |_+_| metode sammen med |_+_| (ELLER) operatør.

For eksempel, for å matche rader som inneholder enten 'Hvit' ELLER 'Sort':

|_+_|

Produksjon:

|_+_|

Her slutter vi oss til listen over strenger med '|' for å lage et regulært uttrykk sendt til |_+_| for å matche rader som inneholder enten «Hvit» eller «Sort», sensitivt for store og små bokstaver.

Uavhengig av store og små bokstaver delvis samsvar

For å gjøre de delvise samsvarene ufølsomme for store og små bokstaver, bruk |_+_| å ignorere kasus:

|_+_|

Dette returnerer de samme radene som det forrige eksemplet, og viser at tilfellet nå er ignorert.

Filtrer etter liste i flere kolonner

Du kan også filtrere på tvers av flere kolonner med en liste over strenger. For eksempel for å matche 'hvit' eller 't-skjorte' i enten kolonnene 'Farge' eller 'Produkt':

|_+_|

Returnerer:

|_+_|

Her ved å bruke |_+_| (ELLER) mellom |_+_| kaller, vil den matche rader som tilfredsstiller ENTEN betingelsene.

Filtrer etter kolonneverdier i en liste

I noen tilfeller vil du kanskje matche de eksakte verdiene fra en av DataFrame-kolonnene, hvis de vises i en liste.

Den beste metoden for denne typen filtrering er å bruke |_+_| en gang til:

|_+_|

Dette skriver ut:

|_+_|

Konklusjon

Vi har utforsket flere nyttige metoder for å filtrere Pandas DataFrame-rader basert på en liste over filterstrenger, inkludert:

  • Ved å bruke |_+_| for eksakte treff
  • Bruker |_+_| for delkamper
  • Blir med i regulært uttrykk med '|' for OR-logikk
  • Filtrering over flere kolonner

Disse filtreringsverktøyene gir kraftige, fleksible måter å dele og filtrere Pandas DataFrames for raske, men komplekse analysearbeidsflyter.

Nå har du kunnskapen om å bruke lister over strenger for raskt å filtrere undergrupper av data i dine Python-datavitenskapsprosjekter!

Se Også: