Aby uzyskać nieco więcej klarowności, spójrzmy na DataFrame z dwoma poziomami w indeksie (MultiIndex).
index = pd.MultiIndex.from_product([['TX', 'FL', 'CA'],
['North', 'South']],
names=['State', 'Direction'])
df = pd.DataFrame(index=index,
data=np.random.randint(0, 10, (6,4)),
columns=list('abcd'))
Sposób reset_index
, zwany z domyślnymi parametrami, konwertuje wszystkie poziomy indeksów na kolumny i używa prostego RangeIndex
jako nowego indeksu.
df.reset_index()
pomocą parametru level
kontrolować którym wskaźnik poziomów przekształcony kolumn. Jeśli to możliwe, użyj nazwy poziomu, która jest bardziej wyraźna. Jeśli nie ma nazw poziomów, można odnieść się do każdego poziomu poprzez jego całkowitą lokalizację, która zaczyna się od 0 z zewnątrz. Możesz użyć wartości skalarnej tutaj lub listy wszystkich indeksów, które chcesz zresetować.
df.reset_index(level='State') # same as df.reset_index(level=0)
W rzadkim przypadku, gdy chcesz zachować indeks i włączyć indeks do kolumny, można wykonać następujące czynności:
# for a single level
df.assign(State=df.index.get_level_values('State'))
# for all levels
df.assign(**df.index.to_frame())
pamiętać, że trzeba wykonaj to n razy dla każdego indeksu, który posiadasz (np. jeśli masz dwa indeksy, to musisz zrobić to dwa razy) – dval
Z 'df.reset_index (level = df.index.names, inplace = True)' można przekonwertować dane całe multiindeksy w kolumny – venti
Czy możesz mieć indeks w kolumnie? właśnie dodane do ramki danych, więc jest to prawdziwa kolumna I indeks? – bretcj7