Я пытаюсь ранжировать фрейм данных в порядке возрастания баллов, и если найдены два одинаковых балла, присваивают одинаковый ранг. В настоящее время я использую следующий метод,
df['IAbsRank'] = df['IAbs'].rank(ascending=0,method='dense')
Исходный файл, который мне дан для сортировки ранжирования, запускается через некоторый скрипт на python (это происходит после ранжирования), который по причинам, не относящимся к делу, удаляет много строк, что приводит к столбцы IAbs
, IRel
пропускают много своих последовательных (и дублируют, если ранжирование одинаковое, то есть 1,2,2,3,4,5,5) чисел.
Я намеренно опустил несколько столбцов из исходного кадра данных, который был бы отображен слева от опубликованного ниже.
Важные столбцы, которые я хочу ранжировать: IAbs
, IRel.
Не уверен, что это уместно, но каждый столбец содержит от 3000 строк, которые я здесь опускаю.
IAbs IAbsRank IRel IRelRank
69102933.3 1 30 10
43261866.7 3 6.1 56
36259200 6 1.8 317
35766400 7 1.9 286
34404266.7 8 7.6 47
29296000 11 2.6 178
Fyi, в самом скрипте python ранжирование выполняется до сохранения файла в его окончательном формате CSV, т.е.
df['IAbsRank'] = df['IAbs'].rank(ascending=0,method='dense')
df['IAbsRank'].to_csv(out_fn)
df['IRelRank'] = df['IRel'].rank(ascending=0,method='dense')
df.sort_values(by="IAbsRank", ascending=True, inplace=True)
df[df['Select'] == True].to_csv(out_fn, index=False, float_format="%.1f")
Где True
представляет условие, которое скрипты python ищут во всех строках. Как упоминалось выше, строки, которые не не удовлетворяют этому условию, удаляются.
Где и как в скрипте python я могу перераспределить столбцы, чтобы исправить строки, которые были удалены, поэтому я в итоге, например, получаю столбцы ранжирования, результаты которых отображаются в возрастающем количестве сверху вниз, без пропущенных чисел?