Изменение порядка столбцов и перемещение столбцов на передний план в pandas DataFrames
Вступление
Изменение порядка столбцов в pandas DataFrames - одна из наиболее распространенных операций, которые мы хотим выполнить. Обычно это полезно, когда дело доходит до представления результатов другим людям, поскольку нам нужно упорядочить (по крайней мере, несколько) столбцов в некотором логическом порядке.
В сегодняшней статье мы собираемся обсудить, как изменить порядок столбцов в пандах DataFrames, используя
- нарезка исходного кадра - особенно актуально, когда вам нужно изменить порядок большинства столбцов
insert()
метод - если вы хотите вставить один столбец в указанный индексset_index()
- если вам нужно переместить столбец в начало фрейма данных- и
reindex()
метод - наиболее актуален для случаев, когда вы можете указать индексы столбцов в том порядке, в котором они должны отображаться (например, в алфавитном порядке)
Во-первых, давайте создадим пример DataFrame, на который мы будем ссылаться в этом руководстве.
import pandas as pd df = pd.DataFrame({ 'colA':[1, 2, 3], 'colB': ['a', 'b', 'c'], 'colC': [True, False, False], 'colD': [10, 20, 30], }) print(df) # colA colB colC colD # 0 1 a True 10 # 1 2 b False 20 # 2 3 c False 30
Использование нарезки
Самый простой способ - нарезать исходный DataFrame, используя список, содержащий имена столбцов в новом порядке, который вы хотите, чтобы они следовали:
df = df[['colD', 'colB', 'colC', 'colA']] print(df) # colD colB colC colA # 0 10 a True 1 # 1 20 b False 2 # 2 30 c False 3
Этот метод, вероятно, достаточно хорош, если вы хотите изменить порядок имен большинства столбцов (и, возможно, ваш DataFrame имеет слишком много столбцов).
Использование метода insert ()
Если вам нужно вставить столбец в DataFrame в указанном месте, тогда pandas.DataFrame.insert()
подойдет. Однако вы должны убедиться, что столбец сначала извлечен из исходного DataFrame, иначе будет выведено ValueError
со следующим сообщением:
ValueError: cannot insert column_name, already exists
Следовательно, перед вызовом insert()
нам сначала нужно выполнить pop()
над DataFrame, чтобы удалить столбец из исходного DataFrame и сохранить его информацию. Например, если мы хотим разместить colD
в качестве первого столбца кадра, нам сначала нужно pop()
столбец, а затем вставить его обратно, на этот раз по желаемому индексу.
col = df.pop("colD")
df.insert(0, col.name, col)
print(df)
# colD colA colB colC
# 0 10 1 a True
# 1 20 2 b False
# 2 30 3 c False
Использование метода set_index ()
Если вы хотите переместить столбец в начало фрейма данных pandas, тогда set_index()
- ваш друг.
Сначала вы указываете столбец, который мы хотим переместить на передний план, как индекс DataFrame, а затем сбрасываете индекс, чтобы старый индекс был добавлен в качестве столбца и использовался новый последовательный индекс. Опять же, обратите внимание, как мы pop()
столбец так, что он удаляется перед добавлением в качестве индекса. Это необходимо, иначе произойдет конфликт имен при попытке сделать старый индекс первым столбцом DataFrame.
df.set_index(df.pop('colD'), inplace=True)
# colA colB colC
# colD
# 10 1 a True
# 20 2 b False
# 30 3 c False
df.reset_index(inplace=True)
# colD colA colB colC
# 0 10 1 a True
# 1 20 2 b False
# 2 30 3 c False
Использование метода reindex ()
Наконец, если вы хотите указать индексы столбцов в том порядке, в котором вы хотите, чтобы они отображались (например, в алфавитном порядке), вы можете использовать метод reindex()
для согласования DataFrame с новым индексом.
Например, предположим, что нам нужно расположить имена столбцов в алфавитном порядке по убыванию.
df = df.reindex(columns=sorted(df.columns, reverse=True)) # colD colC colB colA # 0 10 True a 1 # 1 20 False b 2 # 2 30 False c 3
Обратите внимание, что приведенное выше эквивалентно
df.reindex(sorted(df.columns, reverse=True), axis='columns')
Последние мысли
В сегодняшнем кратком руководстве мы обсудили, как изменить порядок столбцов в фреймах данных pandas разными способами. Убедитесь, что вы выбрали правильный метод, исходя из ваших конкретных требований.
Вам также может понравиться