Ранжируйте фрейм данных в пантах питона плотным рангом и заменяйте непоследовательные числа в столбце последовательными числами - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь ранжировать фрейм данных в порядке возрастания баллов, и если найдены два одинаковых балла, присваивают одинаковый ранг. В настоящее время я использую следующий метод,

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 я могу перераспределить столбцы, чтобы исправить строки, которые были удалены, поэтому я в итоге, например, получаю столбцы ранжирования, результаты которых отображаются в возрастающем количестве сверху вниз, без пропущенных чисел?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...