De index instellen en herstellen
Maak van een kolom de rij-index met set_index(), zet deze terug met reset_index() en gebruik een overzicht van MultiIndex.
De index instellen en herstellen is een gratis Pandas & NumPy Academy-les op CoddyKit. Dit is les 4 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Pandas & NumPy Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Pandas & NumPy Academy bevat in totaal 4 lessen.
Wat is de DataFrame-index?
Elke Pandas DataFrame heeft een rij-index — een reeks labels die aan elke rij is gekoppeld. De standaardindex is een RangeIndex (0, 1, 2, …), maar je kunt deze vervangen door elke kolom die als natuurlijke identificatie dient: een datum, product-ID, gebruikers-ID of unieke sleutel. Een betekenisvolle index verbetert de leesbaarheid, maakt selecties op basis van labels mogelijk en is vereist voor het opnieuw samplen van tijdreeksen.
import pandas as pd
df = pd.DataFrame({
'date': ['2024-01-01', '2024-01-02', '2024-01-03'],
'sales': [100, 200, 150]
})
print('Default index:', df.index.tolist()) # [0, 1, 2]
print(df)set_index() — Een kolom promoveren
DataFrame.set_index('col') promoveert de opgegeven kolom tot rij-index en verwijdert deze uit de gewone kolommen. De waarden van de kolom worden rijlabels. Dit is de standaardmanier om een DataFrame duidelijker te maken wanneer één kolom als natuurlijke sleutel dient. Er wordt een nieuwe DataFrame teruggegeven; het origineel blijft ongewijzigd tenzij inplace=True wordt gebruikt.
import pandas as pd
df = pd.DataFrame({
'date': ['2024-01-01', '2024-01-02', '2024-01-03'],
'sales': [100, 200, 150]
})
df = df.set_index('date')
print(df)
# sales
# date
# 2024-01-01 100
# 2024-01-02 200
# 2024-01-03 150
print(df.index) # Index(['2024-01-01', ...], dtype='object', name='date')Rijen selecteren met een aangepaste index
Zodra een betekenisvolle kolom de index is, kun je .loc[label] gebruiken om rijen op label op te halen met een duidelijke, leesbare syntaxis — zonder booleaanse maskers. Bij een DatetimeIndex kun je zelfs gedeeltelijke datumtekenreeksen gebruiken, zoals df.loc['2024-01'], om alle rijen in januari 2024 te selecteren.
import pandas as pd
df = pd.DataFrame({
'product': ['A', 'B', 'C'],
'price': [10, 20, 30],
'stock': [100, 50, 75]
})
df = df.set_index('product')
# Access row by label
print(df.loc['B'])
# price 20
# stock 50
# Name: B, dtype: int64set_index() met meerdere kolommen — MultiIndex
Als je een lijst met kolomnamen doorgeeft aan set_index(), maak je een MultiIndex (hiërarchische index). Je krijgt toegang tot de resulterende DataFrame met tuples in .loc[]. MultiIndex is essentieel voor gegroepeerde tijdreeksen (regio + datum), paneelgegevens (onderwerp + tijd) en elke analyse waarvoor groepering van rijen op twee niveaus nodig is.
import pandas as pd
df = pd.DataFrame({
'region': ['East', 'East', 'West', 'West'],
'year': [2023, 2024, 2023, 2024],
'revenue': [100, 150, 200, 220]
})
df = df.set_index(['region', 'year'])
print(df)
# revenue
# region year
# East 2023 100
# 2024 150
# West 2023 200
# 2024 220
print(df.loc[('East', 2024)]) # revenue = 150Parameter drop= in set_index()
Standaard verwijdert set_index('col') de kolom uit de gewone kolommen van de DataFrame zodra deze de index wordt. Geef drop=False door om de kolom te behouden en deze tegelijkertijd als index te gebruiken. Dit is soms nuttig wanneer je toegang op basis van labels wilt, maar de kolom ook beschikbaar moet blijven voor berekeningen in de gewone kolomruimte.
import pandas as pd
df = pd.DataFrame({'id': [1, 2, 3], 'value': [10, 20, 30]})
# Keep 'id' as both index and column
df_with_both = df.set_index('id', drop=False)
print(df_with_both)
# id value
# id
# 1 1 10
# 2 2 20
# 3 3 30reset_index() — Index terugplaatsen in een kolom
reset_index() is het omgekeerde van set_index(): de methode verplaatst de huidige rij-index terug naar een gewone kolom en vervangt de index door de standaard RangeIndex. Dit is vaak nodig na een groupby().agg() of na bewerkingen die je een betekenisvolle index geven die je in verdere verwerking als kolom wilt gebruiken.
import pandas as pd
df = pd.DataFrame({'sales': [100, 200]}, index=['East', 'West'])
df.index.name = 'region'
reset = df.reset_index()
print(reset)
# region sales
# 0 East 100
# 1 West 200
print(reset.index.tolist()) # [0, 1] — default RangeIndex restoredreset_index(drop=True)
Als je drop=True doorgeeft aan reset_index(), wordt de huidige index volledig verwijderd in plaats van deze naar een kolom te verplaatsen. Gebruik dit wanneer de huidige index geen betekenisvolle informatie bevat (bijvoorbeeld na het filteren van rijen, wanneer de index hiaten zoals 0, 3, 7 bevat) en je gewoon een schone opeenvolgende index vanaf 0 wilt.
import pandas as pd
df = pd.DataFrame({'x': [10, 20, 30, 40, 50]})
filtered = df[df['x'] > 15]
print('Filtered index:', filtered.index.tolist()) # [1, 2, 3, 4]
# Drop the old index — don't move it to a column
clean = filtered.reset_index(drop=True)
print('Clean index:', clean.index.tolist()) # [0, 1, 2, 3]reset_index() na groupby
Na het aanroepen van groupby().agg() worden de groepssleutels de index. Door reset_index() aan te roepen zet je ze terug naar gewone kolommen, waardoor je een vlak tabelresultaat krijgt dat gemakkelijker te bewerken, samen te voegen of te exporteren is. Dit is in de praktijk een van de meest voorkomende toepassingen van reset_index().
import pandas as pd
df = pd.DataFrame({
'dept': ['Eng', 'HR', 'Eng', 'Sales', 'HR'],
'salary': [90000, 50000, 80000, 70000, 55000]
})
# After groupby, dept becomes the index
agg = df.groupby('dept')['salary'].mean()
print(type(agg), agg.index.tolist())
# dept is the index
# Reset makes dept a regular column again
result = agg.reset_index()
result.columns = ['dept', 'avg_salary']
print(result)rename_axis() voor de indexnaam
Als de rij-index geen naam heeft, of als je deze voor de duidelijkheid wilt hernoemen, gebruik je df.rename_axis('new_name') (voor de rij-index) of df.rename_axis('col_name', axis=1) (voor de kolom-as). Een betekenisvolle naam voor de index maakt de uitvoer beter zelfverklarend, vooral bij het exporteren naar CSV, waarbij de indexnaam een kolomkop wordt.
import pandas as pd
df = pd.DataFrame({'sales': [100, 200, 300]}, index=['A', 'B', 'C'])
print(df.index.name) # None
# Name the index
df = df.rename_axis('region')
print(df)
# sales
# region
# A 100
# B 200
# C 300Opnieuw indexeren om hiaten op te vullen
DataFrame.reindex(new_index) past de vorm van de DataFrame aan een nieuwe index aan en vult posities die wel in de nieuwe index maar niet in de oorspronkelijke gegevens voorkomen met NaN. Dit wordt gebruikt om DataFrames uit te lijnen op een gemeenschappelijke volledige index — bijvoorbeeld om ervoor te zorgen dat elke maand van een jaar voorkomt, ook als er voor sommige maanden geen gegevens zijn.
import pandas as pd
df = pd.DataFrame({
'month': ['Jan', 'Mar', 'Jun'],
'revenue': [100, 200, 300]
}).set_index('month')
all_months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun']
complete = df.reindex(all_months)
print(complete)
# revenue
# Jan 100.0
# Feb NaN <- filled with NaN
# Mar 200.0
# Apr NaN
# May NaN
# Jun 300.0MultiIndex reset_index en niveauselectie
Bij een MultiIndex-DataFrame verplaatst reset_index() standaard alle niveaus terug naar kolommen. Geef level= door om alleen specifieke niveaus te herstellen. Dit is nuttig wanneer je één niveau als index wilt behouden (bijvoorbeeld de datum als index) en alleen het andere niveau naar een kolom wilt verplaatsen.
import pandas as pd
df = pd.DataFrame(
{'revenue': [100, 150, 200, 220]},
index=pd.MultiIndex.from_tuples(
[('East', 2023), ('East', 2024), ('West', 2023), ('West', 2024)],
names=['region', 'year']
)
)
# Reset only the 'year' level, keep 'region' as index
df2 = df.reset_index(level='year')
print(df2)
# year revenue
# region
# East 2023 100
# East 2024 150
# West 2023 200
# West 2024 220Korte controle
Test je begrip van het instellen en herstellen van de index.
Samenvatting van de les
In deze les heb je geleerd dat set_index('col') een kolom promoveert tot rij-index voor toegang op basis van labels, dat het doorgeven van een lijst een MultiIndex maakt en dat reset_index() de index terugplaatst in een kolom (gebruik drop=True om deze in plaats daarvan te verwijderen). Gebruik reindex() om uit te lijnen op een volledige doelindex en ontbrekende posities met NaN op te vullen. Deze technieken vormen de basis voor de komende lessen over GroupBy en samenvoegen.
Leer Python met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 30
- Lessen
- 120
Veelgestelde vragen
Is de les “De index instellen en herstellen” gratis?
Ja — de volledige tekst van “De index instellen en herstellen” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Pandas & NumPy Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Pandas & NumPy Academy bevat in totaal 4 lessen.
Wat leer ik in “De index instellen en herstellen”?
Maak van een kolom de rij-index met set_index(), zet deze terug met reset_index() en gebruik een overzicht van MultiIndex. Je oefent met Pandas & NumPy Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Pandas & NumPy Academy te beginnen?
Ervaring vooraf is niet nodig. Pandas & NumPy Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.
Hoe lang duurt de les “De index instellen en herstellen”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Pandas & NumPy Academy?
Ja. Elke les over Pandas & NumPy Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Sorteren op kolomwaarden
- Sorteren op index
- Waarden rangschikken
- De index instellen en herstellen