Rufen Sie das Paar (Index, Spalte) basierend auf dem Wert in einer Zeile ab
Ich habe einen Datenrahmen in diesem Format
A B C D
1 a a c c
2 c b a a
3 b a c a
.
.
.
Ich möchte alle (Index-, Spalten-) Paare basierend auf einem bestimmten Wert einer Zeile mithilfe von Datenrahmenoperationen erhalten. Alle Paare (Index, Spalte, Zeilenwert) sind eindeutig.
Ich habe mir diese Frage angesehen: Python-Methode zum Abrufen des Index, Spalte für Wert == 1
Obwohl es genau die gleiche Frage wie meine ist, ist die akzeptierte Antwort auf diese Frage etwas vage und ich konnte aufgrund dieser Antworten nicht bekommen, wonach ich suchte.
Ich habe mir auch ähnliche angesehen:
a) Wählen Sie aus dem Pandas-Datenrahmen bestimmte Index- und Spaltenpaare aus
b) Python Pandas: Ruft den Index der Zeilen ab, deren Spalte einem bestimmten Wert entspricht
Ich habe es versucht:
req_cols = df.columns [ ( new_df == "a" ).any() ]
req_inds = (df == "a").index
Ich konnte Indexwerte und Spaltenwerte separat abrufen, war aber verwirrt darüber, wie man sie richtig kombiniert.
Wenn ich den Zeilenwert "a" wähle, den ich erwartet habe [(1,A), (1,B) , (2,C), (2,D), (3,B), (3,D)]
Jede Hilfe wird sehr geschätzt. TIA.
Ein Weg mit where
und stack
:
df.where(df.eq('a')).stack().index.values
Ausgabe:
array([(1, 'A'), (1, 'B'), (2, 'C'), (2, 'D'), (3, 'B'), (3, 'D')],
dtype=object)