Сортировать строки данных в соответствии со значениями в указанных столбцах c - PullRequest
0 голосов
/ 14 марта 2020

У меня есть этот фрейм данных:

d = {'important1': [1.1, 2.2], 'notimportant1': [1.4, 2.5], 'important2': [3.5, 4.2], 'notimportant2': [1.3,2.0]}
important_lst = ['important1', 'important2']
df = pd.DataFrame(data=d)

enter image description here

Я хотел бы добавить еще один столбец, сумму рангов для всех столбцов в important_lst.

Например, в текущем фрейме данных

  • ранги первого ряда: 1, 3, 4, 2, поэтому сумма рангов будет равна 5 ( 1 + 4)
  • ранги второго ряда: 2, 3, 4, 1, поэтому сумма рангов составит 6 (2 + 4)

Ответы [ 2 ]

2 голосов
/ 14 марта 2020

Вам нужно rank на axis=1 для определения rank по столбцам, а затем и sum на оси = 1 после df.loc чтобы отфильтровать important_lst столбцы:

df['new_col'] = df.rank(1).loc[:,important_lst].sum(1)
print(df)

   important1  notimportant1  important2  notimportant2  new_col
0         1.1            1.4         3.5            1.3      5.0
1         2.2            2.5         4.2            2.0      6.0

Примечание: Когда вы суммируете столбцы с плавающей точкой, лучше сохранять их как числа с плавающей точкой (5,0 целых 5) если нет специального требования c округлять их до целого числа.

1 голос
/ 14 марта 2020

Используйте DataFrame.rank с фильтрацией столбцов по списку, сумме и последнему преобразованию в целые числа:

df['new_col'] = df.rank(axis=1)[important_lst].sum(axis=1).astype(int)
print (df)
   important1  notimportant1  important2  notimportant2  new_col
0         1.1            1.4         3.5            1.3        5
1         2.2            2.5         4.2            2.0        6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...