2017-02-12 21 views
2

I haben folgende Beispieldatenrahmen wie folgt definiert:pandas.nlargest() - verwechseln mit wiederholten Indexwerte

df1 = pandas.DataFrame(data = {"Age":[28, 3, 32, 18], "Student":[False, True, False, False]}, index = ["Jack", "Sam", "Nate", "Jack"]) 

und die Ausgabe folgt.

enter image description here

Wenn ich 2 Zeilen mit größten Alten Werten extrahieren möge, verwende ich pandas.nlargest(2, "Age") und der Ausgang hat drei Reihen statt zwei, wie folgend:

enter image description here

Wenn ich versuche, für 4 größte Alter Werten pandas.nlargest(4, "Age"), ist das Ergebnis eher verwirrend, wie folgend:

enter image description here

Ich bin verwirrt über den Grund dafür zu verstehen.

+3

Welche Version von 'Pandas' verwenden Sie? Ich habe dein Beispiel ausprobiert und es funktioniert richtig: 'df1.nlargest (2,' Age ')' gibt zwei Zeilen mit dem größten 'Alter' zurück. Siehe auch https://github.com/pandas-dev/pandas/issues/13412 Ich habe Pandas ver. 0.19.2 – user35603

+0

Die Version ist 0.19.1. Ich habe auch versucht, Online-Python-Shells, aber das Ergebnis ist das gleiche. –

+0

@ user35603 Ich aktualisiert und das Problem ist gelöst. Ich schätze sehr viel.Du hast mich vor stundenlangen Kopfschmerzen bewahrt –

Antwort

2

Das Problem ist behoben. Pandas-Version, die ich verwendet habe, war 0.19.1 und nach suggestion of @user35603 habe ich es auf 0.19.2 aktualisiert und den Code erneut ausgeführt und es funktioniert!

Vielen Dank user35603!

wurde der folgende Fehler in Pandas 0.19.2 behoben:

  • Bug in DataFrame.nlargest und DataFrame.nsmallest, wenn der Index doppelte Werte (GH13412)

Hinweis hatte: Die bug still remains auf der nlargest Funktion, wenn auf Zählung angewendet Funktion

0

Ich arbeite mit einer Excel-Tabelle und habe auch dieses Problem mit größter. Ich benutze auch 0.19.2 und habe immer noch dieses Problem. Die Indexwerte wiederholen sich in meinem Blatt. Es gibt jedoch kein Problem, es sei denn, CELL-Werte wiederholen sich ebenfalls. Beispiel:

new = dataframe.nlargest(5, "DEF") -- only taking 5 largest values 
print(new.loc[:, "DEF"]) 

druckt:

Player 
Player 1 39.0 
Player 2 36.0 
Player 3 36.0 
Player 2 36.0 
Player 3 36.0 
Player 4 34.0  
Player 1 34.0 
Player 5 34.0 
Player 4 34.0 
Player 1 34.0 
PLayer 5 34.0 
Name: DEF, dtype: float64 

- I 11 Werte sind immer statt 5 ... es soll gib mir diese:

Player 
Player 1 39 
Player 2 36 
Player 3 36 
Player 4 34 
Player 1 34 

ABER nlargest für mich funktioniert, wenn Zellwerte wiederholen sich nicht .. Beispiel:

new = all_rounds.nlargest(5, "Frags") 
print(new.loc[:, "Frags"]) 

prints: 
Player 
Player 1 117.0 
Player 2 112.0 
Player 2 105.0 
Player 3 103.0 
PLayer 4 102.0 
Name: Frags, dtype: float64 

- das ist richtig.

Es scheint ein Problem bei der Verwendung von nlargest auf einem Excel-Datenrahmen zu geben, wenn Zellwertwiederholungen vorliegen. Es sei denn, ich vermisse etwas.

Verwandte Themen