как изменить значение после сортировки с помощью np.argsort? (в python) - PullRequest
0 голосов
/ 21 июня 2020

У меня есть a = 'first': 3 'second': 300 b = 'first': 7 'second': 400 Таким образом, каждый столбец определяется с двумя разными значениями. Я хотел бы ранжировать только «первые» значения каждого столбца.

У меня есть следующий фрейм данных:

   a b c d e f
0  3 7 8 9 5 1
1  2 0 1 7 5 6 
2  4 6 2 1 9 8
3  5 7 3 1 8 9 

, который я мог бы ранжировать с помощью np.argsort следующим образом:

   a b c d e f
0  1 3 4 5 2 0
1  2 0 1 5 3 4 
2  2 3 1 0 5 4
3  2 3 1 0 4 5 

значения отсортированы по ранжированию (0 = наименьшее; 5 = наибольшее)

Теперь я хотел бы дать новое значение для каждого столбца, но ранжирование должно остаться.

Новое значение - «второе».

df1 = timeseries[['a','b','c','d']]
df2 = total[['total']]

order = np.argsort(df1, axis=1)

mergelist = pd.concat([order,df2], axis=1)

(если есть лучший способ сравнить только «первое» значение объекта, но при этом сохранить второе, было бы здорово)

Итак, после этого я хотел бы изменить значение каждого значения, но при этом сохранить рейтинг.

Потому что, в конце концов, у меня есть список «итогов», который я хотел бы «заполнить».

    a   b  c  d   e   f   total
0  300 400 50 10 700 100   1000
1  300 400 50 10 700 100   500
2  300 400 50 10 700 100   200
3  300 400 50 10 700 100   1200

Таким образом, каждый столбец имеет свое новое значение, но ранжирование должно оставаться.

Теперь, чтобы заполнить итоговое значение, наименьшее ранжирование для каждой строки начнёт заполнять итоговое значение. и это должно выглядеть так.

    a   b  c  d   e   f   total
0  300  0  0  0  600 100   1000
1  50  400 50 0   0   0    500
2   0   0  0  0  200  0    200
3  300 400 50 10 440  0    1200

Мне отчаянно нужна помощь

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