I einen pandas Rahmen einer dieser ähnlichen haben:Finden einer Array-Elementen Lage in einer Spalte pandas Rahmen (aka pd.series)
import pandas as pd
import numpy as np
data = {'Col1' : [4,5,6,7], 'Col2' : [10,20,30,40], 'Col3' : [100,50,-30,-50], 'Col4' : ['AAA', 'BBB', 'AAA', 'CCC']}
df = pd.DataFrame(data=data, index = ['R1','R2','R3','R4'])
Col1 Col2 Col3 Col4
R1 4 10 100 AAA
R2 5 20 50 BBB
R3 6 30 -30 AAA
R4 7 40 -50 CCC
Da eine Reihe von Zielen:
target_array = np.array(['AAA', 'CCC', 'EEE'])
I möchte die Zellelemente Indizes in Col4
, die auch in der target_array
erscheinen.
Ich habe versucht, eine dokumentierte Antwort zu finden, aber es scheint jenseits meiner Fähigkeiten ... Hat jemand einen Rat?
P.S. Übrigens kann ich für diesen speziellen Fall ein Ziel-Array eingeben, dessen Elemente die Datenrahmen-Indexnamen array(['R1', 'R3', 'R5'])
sind. Wäre es so einfacher?
Edit 1:
Vielen Dank für all die großen Antworten. Leider kann ich nur einen auswählen, aber jeder scheint @Divakar als den besten zu bezeichnen.
df.loc[df.Col4.isin(target_array)].index
EDIT:
Ich lief drei Optionen: Noch sollten Sie verfügbar piRSquared und MAXU Geschwindigkeitsvergleiche für alle Möglichkeiten
Das ist schneller! – piRSquared
@piRSquared Nun, ich hatte gehofft, dass ich ein NumPy-Ding bin! ;) – Divakar
Ich werde das sicherlich im Hinterkopf behalten. – piRSquared