2016-11-19 6 views
0

У меня есть CSV-файл, который выглядит следующим образом:Панды Dataframe - найти макс между двумя колоннами

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

Я хочу, чтобы импортировать CSV и определить, какие Student имеет самую большую разницу между их Math и Reading баллов.

В этом примере. Я ожидаю, что Mike будет результатом, так как его разница составляет 25, а разница Тома - 15.

+0

Создайте столбец, который является разницей, а затем 'abs(). Max()' этот столбец. – AChampion

ответ

4

Вы хотите, чтобы Student был индексом данных. С данными образца, которые вы дали, я бы импортировал его так.

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

Это приведет к разделению столбцов, когда оно увидит нулевое или большее количество пробелов, за которым следует вертикальная полоса, за которой следует ноль или более пробелов. Он также з индекса быть Students столбца

Теперь вы можете использовать это, чтобы найти Student с наибольшей абсолютной разностью между их соответствующими Math и Reading баллами.

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

'Mike' 
+0

Спасибо за быстрый ответ. Поэтому, если у меня есть dataframe, читаемый из файла csv, который имеет несколько строк и столбцов. Каждая строка - один студент, и есть две колонки, такие как математика и оценка чтения. Как найти студентов, которые имеют самую большую разницу между математикой и чтением? Я пробовал это, и он не работает. – art

+0

@art Я дал вам пример, который действительно работает. Когда вы задаете вопрос с такой маленькой детализацией, вы берете на себя ответственность за адаптацию моего предложения к вашей ситуации. Если у вас есть проблемы с этим, сделайте это легко и отредактируйте свой вопрос с примерами данных. Покажите мне, что, по вашему мнению, должно выглядеть так. Вещи не могли работать так же мало, как «математика», не являющаяся верхним регистром. Как я узнаю, если вы не скажете мне специфику – piRSquared

+0

Спасибо за вашу помощь piRSquared. Я очень новичок и на Pandas, и на этом сайте. Поэтому, если у меня есть такой список. Студенты | Math | Чтение в первом ряду; Том | 80 | 75 на 2-й строке; Майк | 65 | 90 на 3-м ряду .... Каков наилучший способ узнать, какие ученики имеют самую большую разницу между математикой и чтением? Я пробовал это, и он не работает df (df ['Math'] - df ['Reading']). Argmax() – art

Смежные вопросы