Auswählen einzelner Werte aus dem Pandas-Dataframe mithilfe von Listen

7
%Vor%

Angenommen, Sie haben einen Pandas-Datenrahmen df wie folgt aussehen:

%Vor%

Wenn Sie ein einzelnes Element aus jeder Spalte in cols bei einem bestimmten Index ind erfassen möchten, sollte die Ausgabe wie eine Reihe aussehen:

%Vor%

Was ich bisher versucht habe, war:

%Vor%

was die unerwünschte Ausgabe ergibt:

%Vor%

Irgendwelche Vorschläge?

Kontext: Der nächste Schritt wäre die Abbildung der Ausgabe eines df.idxmax() -Aufrufs eines Datenrahmens auf einen anderen Datenrahmen mit denselben Spaltennamen und -indizes, aber das kann ich wahrscheinlich herausfinden, wenn ich weiß, wie ich die oben erwähnte Transformation durchführen soll.

    
edager 18.10.2017, 17:48
quelle

5 Antworten

8

Sie können DataFrame.lookup () verwenden:

%Vor%

oder:

%Vor%

Erläuterung:

%Vor%     
MaxU 18.10.2017, 18:06
quelle
7

Hier ist ein Vektor mit NumPy advanced-indexing um ein Element pro Spalte auszuwählen, mit den Zeilenindizes ind pro Spalte -

%Vor%

Beispiellauf -

%Vor%

Laufzeittest

Vergleichen wir die vorgeschlagene mit der in die @ MaxU-Lösung vorgeschlagenen vektorisierten lookup -Methode von Pandas und da wir sehen, wie gut die vektorisierten sind, haben wir eine größere Anzahl von Spalten -

%Vor%     
Divakar 18.10.2017 18:40
quelle
2

Es gibt einen anderen Weg mit mutiIndex, wenn Sie .loc

verwenden möchten %Vor%     
Wen 18.10.2017 18:57
quelle
1

Es sollte einen direkteren Weg geben, aber daran könnte ich denken,

%Vor%     
Vaishali 18.10.2017 18:00
quelle
1

Sie könnten die Spalten- und Indexwerte komprimieren, für die Sie die Werte abrufen möchten, und dann daraus eine Reihe erstellen:

%Vor%

Oder wenn Sie immer nur den Diagonalwert benötigen:

%Vor%

Wird viel schneller sein

    
johnchase 18.10.2017 17:59
quelle

Tags und Links