Переупорядочить столбцы в кадре данных в зависимости от вывода сортировкиPython

Программы на Python
Anonymous
Переупорядочить столбцы в кадре данных в зависимости от вывода сортировки

Сообщение Anonymous »

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

Код: Выделить всё

df = pd.DataFrame(
{
'a':[1,2,3,4,5,6],
'b':[1,1,3,3,5,5],
'c':[1,2,3,4,5,6],
'd':[1,1,1,1,1,5],
}
)

In [1051]: df
Out[1051]:
a  b  c  d
0  1  1  1  1
1  2  1  2  1
2  3  3  3  1
3  4  3  4  1
4  5  5  5  1
5  6  5  6  5
Если я отсортирую df, используя все столбцы, я получу следующее:

Код: Выделить всё

In [1055]: columns = list(df.columns)
...:
...: dfSorted = df.sort_values(by=columns, ascending=False)
...:
...: print(dfSorted)
a  b  c  d
5  6  5  6  5
4  5  5  5  1
3  4  3  4  1
2  3  3  3  1
1  2  1  2  1
0  1  1  1  1
Я хотел бы изменить порядок столбцов, начиная со столбца с наименьшими различиями между строками, чтобы последний столбец имел наибольшее количество различий. В моем примере ожидаемый порядок должен быть d,b,c,a.
Это так, потому что столбец d имеет только два разных значения (1 и 5), а столбцы c и a имеют разные значения. Столбец b находится между ...

Код: Выделить всё

In [1056]: dfSorted[['d','b','c','a']]
Out[1056]:
d  b  c  a
5  5  5  6  6
4  1  5  5  5
3  1  3  4  4
2  1  3  3  3
1  1  1  2  2
0  1  1  1  1
Есть идеи? Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/786 ... ing-output

Вернуться в «Python»