Я пытаюсь группировать кадр данных и сортировать его одновременно по абсолютной величине определенного столбца.Кадр данных группы Pandas и сортировка по значению столбца
groups values foo bar
75 A 3 1 2
77 B -3 31 34
112 A 4 0 4
129 C 50 5 3
134 C -60 44 5
На весь кадр данных можно использовать
df.reindex(df.values.abs().sort_values(ascending=False).index)
Это отлично работает. Однако для сгруппированных кадров данных это явно не работает.
Когда я пытаюсь,
df.groupby('groups')['values'].reindex(df.values.abs().sort_values(ascending=False).index)
Я получаю ожидаемую ошибку:
AttributeError: Cannot access callable attribute 'reindex' of 'SeriesGroupBy' objects, try using the 'apply' method
apply
Попытка, вероятно, требует, чтобы сделать еще один столбец для абсолютных значений, но я не хочу, чтобы добавить это. Есть ли опрятный способ реализовать это?
Нужный выход будет группироваться кадр данных (объект), который отсортирован для столбца значений:
for groups, data in df_grouped:
print group, data
A,
values foo bar
75 3 1 2
112 4 0 4
B,
values foo bar
77 -3 31 34
C,
values foo bar
134 -60 44 5
129 50 5 3
Сортировка правильно, но я хотел бы иметь сгруппированный кадр данных, возвращаемые для дальнейшей обработки данных. – Fourier
Вы можете [отправить] (http://stackoverflow.com/posts/38267145/edit) желаемый результат? – MaxU
См. Мой отредактированный вопрос для ожидаемого вывода. Спасибо @MaxU – Fourier