У меня есть dataframe так:Как отсортировать данные на основе idxmax?
A B C
0 1 2 1
1 3 -8 10
2 10 3 -20
3 50 7 1
Я хотел бы изменить ее столбцы, основанные на индексе максимального абсолютного значения в каждом столбце. В столбце A
максимальное абсолютное значение находится в строке 3, в B
это строка 1, а в C
это строка 2, что означает, что моя новая датафрейма должна быть в порядке B C A
.
В настоящее время я делаю это следующим образом:
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': [1, 3, 10, 50], 'B': [2, -8, 3, 7], 'C': [1, 10, -20, 1]})
indMax = abs(df).idxmax(axis=0)
df = df[np.argsort(indMax)]
Так что я сначала определить показатели максимального значения в столбец, которые хранятся в indMax
, затем отсортировать его и переставить dataframe соответственно, что дает мне желаемому выход:
B C A
0 2 1 1
1 -8 10 3
2 3 -20 10
3 7 1 50
Мой вопрос, есть ли возможность передать функции idxmax
непосредственно к sort
функции и изменить dataframe inplace
,
Это дает мне 'AttributeError: объект серии 'не имеет атрибут 'sort_values''. Какую версию панды вы используете? – Cleb
А, последняя версия использует 'sort' вместо – EdChum
Когда я использую' sort', я получаю 'AttributeError: объект 'NoneType' не имеет атрибута 'index'' Кажется, я должен обновить версию pandas ... Ах, неважно, должно проверили ваше редактирование - теперь он отлично работает. Поэтому я выдвигаю его и могу принять его в конце года, в зависимости от качества других ответов. – Cleb