2017-09-25 2 views
1

Ich habe einen Pandas Datenrahmen mit einer Spalte und ich möchte den Index des Medians kennen. Das heißt, bestimme ich den Median so:Erhalte den entsprechenden Index des Median

df.median()

Das gibt mir den Medianwert, aber ich möchte den Index dieser Zeile kennen. Ist das möglich? Für eine Liste mit ungleicher Länge könnte ich nach dem Index mit diesem Wert suchen, aber für gerade Listenlängen wird das nicht funktionieren. Kann jemand helfen?

Diese Frage wurde in einem anderen Beitrag gestellt, wo die Antwort im Grunde genommen darin bestand, nach Zeilen zu suchen, die den gleichen Wert wie der Median haben. Aber wie ich schon sagte, das wird nicht funktionieren für eine lange Liste.

Unten ist ein Min Beispiel (ich den Vorschlag von Wen unten aufgenommen haben):

df = pd.DataFrame(np.random.randn(6, 1), columns=list('A')) 
df.median() 
df.loc[df[0]==df[0].median()] 

Out[120]: 
Empty DataFrame 
Columns: [0] 
Index: [] 
+2

'df.loc [df.col == df.col.median()]' – Wen

+0

Danke Wen. Ich erhalte diesen Fehler mit diesem Befehl: 'DataFrame' -Objekt hat kein Attribut 'col' –

+0

Ersetze col zu deinen Spaltennamen. – Wen

Antwort

2

Sie Wens Antwort für Datenrahmen von ungerader Länge verwenden können.

Für Datenfelder gleicher Länge macht die Frage keinen Sinn. Wie Sie festgestellt haben, existiert der Median nicht im Datenrahmen. Sie können jedoch den Datenrahmen nach Ihrer Interessensspalte sortieren und dann die Indizes für die beiden "Median" -Werte finden.

import pandas as pd 
import numpy as np 

df = pd.DataFrame(np.random.randn(6, 1), columns=list('A')) 
df.median() 

df.loc[df['A']==df['A'].median()] 

df.sort_values(by='A', inplace=True) 

df[df['A'] > df['A'].median()].iloc[0] 
df[df['A'] < df['A'].median()].iloc[-1] 
+0

Oh ja, Sie haben natürlich Recht, für die gerade Länge ist der Median nicht im Datenrahmen. Dies ist eine großartige alternative Lösung. Das ist für mich in Ordnung. Ich danke dir sehr!!! –

Verwandte Themen