2016-11-19 1 views
0

Ich habe eine csv, die wie folgt aussieht:Pandas Datenrahmen - finden max zwischen zwei Säulen

Students | Math | Reading 
Tom | 80 | 75 
Mike | 65 | 90 

Ich möchte diese csv importieren und bestimmen, welche Student die größte Differenz zwischen ihren Math und Reading Noten hat.

In diesem Beispiel. Ich erwarte Mike das Ergebnis zu sein, da sein Unterschied 25 ist, während Toms Unterschied 15 ist.

+0

Erstellen Sie eine Spalte, die die Differenz ist und dann 'abs(). Max()' diese Spalte. – AChampion

Antwort

4

Sie möchten Student den Index des Datenrahmens sein. Mit den Beispieldaten, die du angegeben hast, würde ich es so importieren.

df = pd.read_csv('test.csv', sep='\s*\|\s*', engine='python', index_col=0) 

Dadurch werden die Spalten trennen, wenn es sieht, null oder mehr Räume, die durch einen senkrechten Strich durch Null oder mehrere Leerzeichen gefolgt gefolgt. Es wird se auch der Index die Students Spalte

Nun werden Sie diese verwenden können, die Student mit dem größten absoluten Differenz zwischen ihren jeweiligen Math und Reading Noten zu finden.

df.Math.sub(df.Reading).abs().idxmax() 

'Mike' 
+0

Danke für die schnelle Antwort. Also wenn ich einen Datenframe aus einer CSV-Datei gelesen habe, die mehrere Zeilen und Spalten hat. Jede Zeile ist ein Student und es gibt zwei Spalten wie Mathe und Lese-Score. Wie finde ich die Schüler, die den größten Unterschied zwischen Mathematik und Lesen haben? Ich habe das versucht und es funktioniert nicht. – art

+0

@art Ich gab Ihnen ein Beispiel, das funktioniert. Wenn Sie eine Frage mit so wenig Details stellen, übernehmen Sie die Verantwortung, meinen Vorschlag an Ihre Situation anzupassen. Wenn Sie Probleme damit haben, dann machen Sie es mir einfach und bearbeiten Sie Ihre Frage mit Beispieldaten. Zeig mir, wie die Ausgabe aussehen soll. Dinge konnten nicht von so wenig funktionieren, wie "Mathematik" nicht groß ist. Wie würde ich es wissen, wenn Sie mir nicht die Einzelheiten sagen – piRSquared

+0

Danke für Ihre Hilfe piRSquared. Ich bin sehr neu auf beiden Pandas und dieser Seite. Also wenn ich eine solche Liste habe. Studenten | Mathematik | Lesen in der ersten Reihe; Tom | 80 | 75 in der 2. Reihe; Mike 65 | 90 in der 3. Reihe .... Was ist der beste Weg herauszufinden, welche Schüler den größten Unterschied zwischen Mathematik und Lesen erzielt haben? Ich habe das ausprobiert und es funktioniert nicht df (df ['Math'] - df ['Reading']). Argmax() – art

Verwandte Themen