У меня есть 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
Мне отчаянно нужна помощь