2016-11-19 22 views
0

我有一個csv,看起來像這樣之間:熊貓據幀 - 找到最大的兩列

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

我想導入這個CSV並確定哪些Student都有自己MathReading分數之間的差異最大。

在這個例子中。我期望Mike是因爲他的差異是25,而湯姆的差異是15

+0

創建一個不同的列,然後是'abs()。max()'那一列。 – AChampion

回答

4

您希望Student成爲數據幀的索引。用你給的樣本數據,我會像這樣導入它。

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

當它看到零個或多個空格,隨後豎線後跟零個或多個空格這將分開的列。它也將SE中的指數是Students

現在你可以用它來找到Student各自的MathReading分數之間的最大差值的絕對值。

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

'Mike' 
+0

感謝您的快速響應。所以,如果我從csv文件中讀取具有多行和多列的數據幀。每一行都是一個學生,有兩列像數學和閱讀成績。我如何找到數學和閱讀最大區別的學生?我試過這個,它不起作用。 – art

+0

@art我給你一個可以工作的例子。當你問一個如此細微的問題時,你就有責任根據你的情況調整我的建議。如果您在此方面遇到困難,請將它放在我身上並使用示例數據編輯您的問題。告訴我你認爲輸出應該是什麼樣子。事情不可能從「數學」不是大寫的那麼簡單。我如何知道,除非你告訴我具體情況 – piRSquared

+0

感謝您的幫助piRSquared。我對熊貓和這個網站都很新。所以如果我有這樣的列表。學生|數學|閱讀第一行;湯姆| 80 |第二排75人;邁克| 65 | 90排在第三排....找出哪些學生的數學和閱讀分數最大的區別是什麼?我試過這個,它不起作用df(df ['Math'] - df ['Reading'])。argmax() – art