πŸ” Как ΠΏΠ΅Ρ€Π΅ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ pandas ΠΈ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ руководство

Для пСрСиндСксации Π΄Π°Π½Π½Ρ‹Ρ… Π² Pandas ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ reindex().

import pandas as pd

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° DataFrame
data = {'Имя': ['Анна', 'Борис', 'ΠšΠ°Ρ‚Ρ'],
        'Возраст': [25, 30, 35]}
df = pd.DataFrame(data)

# ΠŸΠ΅Ρ€Π΅ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ с использованиСм ΠΌΠ΅Ρ‚ΠΎΠ΄Π° reindex()
Π½ΠΎΠ²Ρ‹ΠΉ_индСкс = [2, 1, 0]
df_reindexed = df.reindex(Π½ΠΎΠ²Ρ‹ΠΉ_индСкс)

print(df_reindexed)

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как ΠΏΠ΅Ρ€Π΅ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Pandas

ΠŸΠ΅Ρ€Π΅ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ - это процСсс измСнСния индСкса строк Π² DataFrame ΠΈΠ»ΠΈ Series. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Pandas прСдоставляСт Π½Π°ΠΌ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ инструмСнты для пСрСиндСксации Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ индСкс ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Π²ΠΎ врСмя выполнСния Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½Ρ‹Ρ….

Reindex() - основной ΠΌΠ΅Ρ‚ΠΎΠ΄ пСрСиндСксации

Π’ основС пСрСиндСксации Π² Pandas Π»Π΅ΠΆΠΈΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ reindex(). Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ создаСт Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ DataFrame ΠΈΠ»ΠΈ Series с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ Π½ΠΎΠ²Ρ‹ΠΌ индСксом.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΌΠ΅Ρ‚ΠΎΠ΄Π° reindex() Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ DataFrame:

import pandas as pd

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ исходный DataFrame
df = pd.DataFrame({'A': [1, 2, 3],
                   'B': [4, 5, 6],
                   'C': [7, 8, 9]})

print("Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ DataFrame:")
print(df)

# ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ Π½ΠΎΠ²Ρ‹ΠΉ индСкс
new_index = ['a', 'b', 'c']

# Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ reindex() для пСрСиндСксации DataFrame
df_reindexed = df.reindex(new_index)

print("DataFrame послС пСрСиндСксации:")
print(df_reindexed)

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния этого ΠΊΠΎΠ΄Π°, Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ DataFrame с Π½ΠΎΠ²Ρ‹ΠΌ индСксом, состоящим ΠΈΠ· элСмСнтов 'a', 'b' ΠΈ 'c'. Π‘Ρ‚Ρ€ΠΎΠΊΠΈ с Π½Π΅ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ индСксами Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ значСния NaN.

ΠœΠ΅Ρ‚ΠΎΠ΄ reindex() Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для пСрСиндСксации ΠΏΠΎ столбцам с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° columns:

import pandas as pd

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ исходный DataFrame
df = pd.DataFrame({'A': [1, 2, 3],
                   'B': [4, 5, 6],
                   'C': [7, 8, 9]})

print("Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ DataFrame:")
print(df)

# ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ Π½ΠΎΠ²Ρ‹Π΅ столбцы
new_columns = ['X', 'Y', 'Z']

# Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ reindex() для пСрСиндСксации столбцов DataFrame
df_reindexed = df.reindex(columns=new_columns)

print("DataFrame послС пСрСиндСксации:")
print(df_reindexed)

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создаСм DataFrame, Π° Π·Π°Ρ‚Π΅ΠΌ пСрСиндСксируСм столбцы, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π½Π°Π±ΠΎΡ€ Π½ΠΎΠ²Ρ‹Ρ… столбцов 'X', 'Y' ΠΈ 'Z'.

ffill ΠΈ bfill - Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ NaN Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

Часто ΠΏΡ€ΠΈ пСрСиндСксации Π΄Π°Π½Π½Ρ‹Ρ… Π½Π°ΠΌ трСбуСтся Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Π΅ значСния NaN Π² ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΌ DataFrame. Для этого ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ffill() ΠΈ bfill().

ΠœΠ΅Ρ‚ΠΎΠ΄ ffill() заполняСт ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Π΅ значСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ Π½Π΅ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ bfill() заполняСт ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Π΅ значСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π²ΠΏΠ΅Ρ€Π΅Π΄ΠΈ.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ffill() ΠΈ bfill() для заполнСния ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΈ пСрСиндСксации:

import pandas as pd

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ исходный DataFrame
df = pd.DataFrame({'A': [1, 2, 3],
                   'B': [4, 5, 6],
                   'C': [7, 8, 9]})

print("Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ DataFrame:")
print(df)

# ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ Π½ΠΎΠ²Ρ‹ΠΉ индСкс
new_index = ['a', 'b', 'c', 'd']

# Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ reindex() для пСрСиндСксации DataFrame
df_reindexed = df.reindex(new_index)

print("DataFrame послС пСрСиндСксации с NaN значСниями:")
print(df_reindexed)

# ЗаполняСм NaN значСниями ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌΠΈ значСниями
df_filled = df_reindexed.ffill()

# ЗаполняСм NaN значСниями ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ значСниями
df_filled = df_filled.bfill()

print("DataFrame с Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΌΠΈ значСниями:")
print(df_filled)

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния этого ΠΊΠΎΠ΄Π°, Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ DataFrame с Π½ΠΎΠ²Ρ‹ΠΌ индСксом, содСрТащим значСния 'a', 'b', 'c' ΠΈ 'd', Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Π΅ значСния ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌΠΈ ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ значСниями ΠΈΠ· исходного DataFrame.

set_index() - установка индСкса ΠΈΠ· ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ столбца

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ индСкс ΠΈΠ· ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ столбца, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ set_index(). Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ измСняСт Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ DataFrame, устанавливая ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ столбСц Π² качСствС Π½ΠΎΠ²ΠΎΠ³ΠΎ индСкса.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΌΠ΅Ρ‚ΠΎΠ΄Π° set_index() для установки индСкса ΠΈΠ· столбца 'A':

import pandas as pd

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ исходный DataFrame
df = pd.DataFrame({'A': [1, 2, 3],
                   'B': [4, 5, 6],
                   'C': [7, 8, 9]})

print("Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ DataFrame:")
print(df)

# УстанавливаСм индСкс ΠΈΠ· столбца 'A'
df_set_index = df.set_index('A')

print("DataFrame с Π½ΠΎΠ²Ρ‹ΠΌ индСксом ΠΈΠ· столбца 'A':")
print(df_set_index)

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния этого ΠΊΠΎΠ΄Π°, Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ DataFrame с индСксом, установлСнным ΠΈΠ· столбца 'A'.

reset_index() - сброс индСкса

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ индСкс ΠΈ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ DataFrame ΠΊ исходному Π²ΠΈΠ΄Ρƒ с числовым индСксом, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ reset_index().

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΌΠ΅Ρ‚ΠΎΠ΄Π° reset_index() для сброса индСкса:

import pandas as pd

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ исходный DataFrame
df = pd.DataFrame({'A': [1, 2, 3],
                   'B': [4, 5, 6],
                   'C': [7, 8, 9]})

print("Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ DataFrame:")
print(df)

# БбрасываСм индСкс
df_reset_index = df.reset_index()

print("DataFrame с ΡΠ±Ρ€ΠΎΡˆΠ΅Π½Π½Ρ‹ΠΌ индСксом:")
print(df_reset_index)

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния этого ΠΊΠΎΠ΄Π°, Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ DataFrame с ΡΠ±Ρ€ΠΎΡˆΠ΅Π½Π½Ρ‹ΠΌ индСксом ΠΈ числовым индСксом ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

ПодвСдСниС ΠΈΡ‚ΠΎΠ³ΠΎΠ²

Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрСли, ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Pandas. ΠœΡ‹ ΠΈΠ·ΡƒΡ‡ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ reindex(), ffill(), bfill(), set_index() ΠΈ reset_index(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ индСкс Π² DataFrame ΠΈ Series.

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ пСрСиндСксация ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Π° ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, позволяя Π»Π΅Π³ΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ порядок строк ΠΈΠ»ΠΈ столбцов, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ значСния ΠΏΠΎ Π½ΡƒΠΆΠ½Ρ‹ΠΌ индСксам.

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

36- Pandas DataFrames: Reindexing

How To Do Reindexing In Pandas ? Pandas Tutorials For Beginners 2019 #4

Pandas Pro Tips: How to Change Column Positions with Reindex in Pandas

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

πŸ” Как ΠΏΠ΅Ρ€Π΅ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ pandas ΠΈ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ руководство

πŸ”Ž Как ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ столбСц Π² pandas: Π»Π΅Π³ΠΊΠΈΠΉ способ для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ!