Rufen Sie das Paar (Index, Spalte) basierend auf dem Wert in einer Zeile ab


Amith Adiraju

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.

Quang Hoang

Ein Weg mit whereund 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)

Verwandte Artikel


Doppelte Zeile basierend auf dem Wert in einer anderen Spalte

MRA: Ich habe einen Datenrahmen von Transaktionen. Jede Zeile repräsentiert eine Transaktion von zwei Elementen (stellen Sie sich das wie eine Transaktion von 2 Veranstaltungstickets oder so etwas vor). Ich möchte jede Zeile basierend auf der verkauften Menge

Pandas rufen einen Wert basierend auf dem Index ab

SunnyBoiz Ich habe versucht, danach zu suchen, aber irgendwie nicht die richtige Antwort zu finden. Gegeben den folgenden einfachen Datenrahmen: country continent population 0 UK Europe 111111 1 Spain Europe 222222 2 Mala