Изменение порядка столбцов в Pandas: использование метода reindex и метода insert
В этой статье вы узнаете о различных способах изменения порядка столбцов в DataFrame Pandas, включая использование метода .reindex() для переупорядочивания столбцов.
Оглавление
Загрузка примера DataFrame
Для начала загрузим пример DataFrame, который вы сможете использовать на протяжении всего урока. Для этого урока нам понадобится только библиотека Pandas:
import pandas as pd
df = pd.DataFrame.from_dict(
{
'Name': ['Joan', 'Devi', 'Melissa', 'Dave'],
'Age':[19, 43, 27, 32],
'Gender': ['Female', 'Female', 'Female', 'Male'],
'Education': ['High School', 'College', 'PhD', 'High School'],
'City': ['Atlanta', 'Toronto', 'New York City', 'Madrid']
}
)
print(df) Name Age Gender Education City
0 Joan 19 Female High School Atlanta
1 Devi 43 Female College Toronto
2 Melissa 27 Female PhD New York City
3 Dave 32 Male High School MadridИзменение порядка столбцов с помощью прямого присваивания
Самый прямой способ изменить порядок столбцов — это использовать прямое присваивание (простите за каламбур!).
Это означает, что вы просто указываете нужный порядок столбцов в виде списка и передаёте его в квадратных скобках при повторном присваивании DataFrame.
В данный момент столбцы нашего DataFrame расположены в следующем порядке: ['Name', 'Age', 'Gender', 'Education', 'City'].
Предположим, что вы хотите поменять местами столбцы Age и Gender. Для этого можно написать следующий код:
df = df[['Name', 'Gender', 'Age', 'Education', 'City']]
print(df) Name Gender Age Education City
0 Joan Female 19 High School Atlanta
1 Devi Female 43 College Toronto
2 Melissa Female 27 PhD New York City
3 Dave Male 32 High School MadridОзнакомьтесь с другими уроками Python на сайте datagy, включая наше полное руководство по стилизации Pandas и подробный обзор сводных таблиц (Pivot Tables) в Pandas!
Переупорядочивание столбцов с помощью метода Pandas .reindex()
.reindex()Ещё один способ изменения порядка столбцов — использование метода .reindex() из Pandas. Он позволяет передать желаемый порядок столбцов через параметр columns=.
В следующем примере поменяем местами столбцы Education и City:
df = df.reindex(columns=['Name', 'Gender', 'Age', 'City', 'Education'])
print(df) Name Gender Age City Education
0 Joan Female 19 Atlanta High School
1 Devi Female 43 Toronto College
2 Melissa Female 27 New York City PhD
3 Dave Male 32 Madrid High SchoolПереупорядочивание столбцов Pandas с помощью метода .insert()
.insert()Оба вышеуказанных метода предполагают, что вы вручную указываете список столбцов в нужном порядке. Если вы работаете с большим DataFrame, это может быть утомительным и занимать много времени.
Если вы знаете, на какую позицию нужно вставить столбец, метод .insert() предлагает более удобный способ для этого.
Давайте рассмотрим, как это можно сделать с помощью Python. В следующем примере переместим столбец City между столбцами Name и Gender, чтобы он стал вторым по счёту:
city = df['City']
df = df.drop(columns=['City'])
df.insert(loc=1, column='City', value=city)
print(df)Давайте кратко разберём, что мы сделали:
Мы сохранили столбец
df['City']в переменнуюcityкак объект Series.Удалили этот столбец из DataFrame с помощью метода
.drop().Затем вставили сохранённый столбец обратно в DataFrame на нужную позицию (в данном случае — первую) под тем же названием
'City'.
В результате получаем следующий DataFrame:
Name City Gender Age Education
0 Joan Atlanta Female 19 High School
1 Devi Toronto Female 43 College
2 Melissa New York City Female 27 PhD
3 Dave Madrid Male 32 High SchoolИзменение порядка столбцов с использованием пользовательской функции
Если вам часто приходится перемещать различные столбцы в DataFrame, вы можете оформить вышеописанный метод в виде пользовательской функции.
Давайте посмотрим, как это можно реализовать на Python:
def reorder_columns(dataframe, col_name, position):
"""Перемещает указанный столбец в заданную позицию в DataFrame.
Args:
dataframe (pd.DataFrame): DataFrame для обработки.
col_name (string): Название столбца, который нужно переместить.
position (int): Индекс (начиная с 0), куда нужно переместить столбец.
Returns:
pd.DataFrame: DataFrame с переупорядоченными столбцами.
"""
temp_col = dataframe[col_name]
dataframe = dataframe.drop(columns=[col_name])
dataframe.insert(loc=position, column=col_name, value=temp_col)
return dataframe
# Пример использования (предполагается, что DataFrame 'df' уже определен)
df = reorder_columns(dataframe=df, col_name='Age', position=0)
print(df)
# Возвращает:
# Age Name Age Group Birth City Gender
# 0 23 Jane 18-35 London Female
# 1 45 Melissa 35-50 Paris Female
# 2 35 John 35-50 Toronto Male
# 3 64 Matt 65+ Atlanta Male Age Name City Gender Education
0 19 Joan Atlanta Female High School
1 43 Devi Toronto Female College
2 27 Melissa New York City Female PhD
3 32 Dave Madrid Male High SchoolЗаключение
В этой статье вы узнали, как изменять порядок столбцов в DataFrame Pandas, включая использование методов .reindex() и .insert(). В завершение мы рассмотрели пользовательскую функцию, которая поможет вам быстро переупорядочивать столбцы, если эта задача встречается у вас часто.
Если вы хотите узнать больше о методе .reindex() в Pandas, ознакомьтесь с официальной документацией по этой ссылке.
Дополнительные ресурсы
Чтобы углубить свои знания по смежным темам, ознакомьтесь со следующими материалами:
Добавление пустого столбца в DataFrame Pandas
Последнее обновление