ein Datenrahmen mit einer Spalte „BoolCol“ Da wir die Indizes der Datenrahmen finden möchten, in denen die Werte für „BoolCol“ == truePython Pandas: Index der Zeilen Erhalten Sie die Spalte bestimmten Wert übereinstimmt
I zur Zeit haben die Iterieren Weg, es zu tun, die perfekt funktioniert:
for i in range(100,3000):
if df.iloc[i]['BoolCol']== True:
print i,df.iloc[i]['BoolCol']
Aber das ist nicht der Weg des richtigen Panda, es zu tun. Nach einigen Recherchen, ich bin derzeit mit diesem Code:
df[df['BoolCol'] == True].index.tolist()
Dies mir eine Liste von Indizes gibt, aber sie nicht übereinstimmen, wenn ich sie überprüfen, indem Sie:
df.iloc[i]['BoolCol']
Das Ergebnis ist eigentlich falsch !!
Welches wäre die richtige Pandas-Methode?
Noch eine andere Art und Weise zu tun, 'df.query ('BoolCol')'. –
Ich weiß, das ist alt, aber ich frage mich, ob es eine einfache Möglichkeit gibt, die 0-basierten Indexnummern aus einer Abfrage zu erhalten. Ich brauche die Iloc-Nummern, weil ich einige Zeilen vor und nach einer Zeile auswählen möchte, die eine bestimmte Bedingung erfüllen. Mein Plan war also, die 0-Indizes von Zeilen zu erhalten, die die Bedingung erfüllen, und dann Slices für die Verwendung in iloc() zu erstellen. Das einzige, was ich sehe, ist get_loc, aber es kann kein Array nehmen. – sheridp
@sheridp: Wenn Sie eine boolesche Maske haben, können Sie die Ordinalindizes finden, wo die 'Maske'' True' ist, indem Sie 'np.flatnonzero' verwenden. Ich habe den Beitrag oben bearbeitet, um zu zeigen, was ich meine. – unutbu