Есть ли способ изменить порядок столбцов в фрейме данных pandas на основе моих личных предпочтений (то есть не в алфавитном или числовом порядке, а, скорее, в соответствии с определенными соглашениями)?
Простой пример:
frame = pd.DataFrame({
'one thing':[1,2,3,4],
'second thing':[0.1,0.2,1,2],
'other thing':['a','e','i','o']})
производит это:
one thing other thing second thing
0 1 a 0.1
1 2 e 0.2
2 3 i 1.0
3 4 o 2.0
Но вместо этого я бы хотел это:
one thing second thing other thing
0 1 0.1 a
1 2 0.2 e
2 3 1.0 i
3 4 2.0 o
(Пожалуйста, предоставьте общее решение, а не конкретное для этого случая. Большое спасибо.)
Вы можете использовать это:
источник
pandas
.pandas
меняет порядок столбцов на месте (по крайней мере, не в v0.23`).Вот решение, которое я использую очень часто. Когда у вас есть большой набор данных с множеством столбцов, вам определенно не нужно вручную переупорядочивать все столбцы.
Что вы можете и, скорее всего, захотите сделать, так это просто заказать первые несколько столбцов, которые вы часто используете, и позволить всем остальным столбцам быть самими собой. Это общий подход в R.
df %>%select(one, two, three, everything())
Таким образом, вы можете сначала вручную ввести столбцы, которые вы хотите упорядочить и расположить перед всеми другими столбцами в списке
cols_to_order
.Затем вы составляете список для новых столбцов, объединив остальные столбцы:
После этого вы можете использовать
new_columns
другие предлагаемые решения.источник
Вы также можете сделать что-нибудь вроде
df = df[['x', 'y', 'a', 'b']]
Также вы можете получить список столбцов с помощью:
Результат будет примерно таким:
Которую потом легко переставить вручную.
источник
Создайте его со списком вместо словаря
источник
Вы также можете использовать OrderedDict:
источник
Добавьте параметр columns:
источник
Попробуйте выполнить индексацию (так что вам нужно универсальное решение не только для этого, поэтому порядок индекса может быть именно таким, каким вы хотите):
Сейчас:
Является:
источник
Я считаю, что это самый простой и рабочий вариант:
источник