Saya memiliki kerangka data dengan 2 level indeks:
value
Trial measurement
1 0 13
1 3
2 4
2 0 NaN
1 12
3 0 34
Yang ingin saya ubah menjadi ini:
Trial measurement value
1 0 13
1 1 3
1 2 4
2 0 NaN
2 1 12
3 0 34
Bagaimana saya bisa melakukan ini?
Saya memerlukan ini karena saya ingin menggabungkan data seperti yang diperintahkan di sini , tetapi saya tidak dapat memilih kolom saya seperti itu jika digunakan sebagai indeks.
.reset_index()
Jawaban:
The reset_index () adalah metode panda DataFrame yang akan mentransfer nilai-nilai indeks ke dalam DataFrame sebagai kolom. Pengaturan default untuk parameter adalah drop = False (yang akan menjaga nilai indeks sebagai kolom).
Yang harus Anda lakukan tambahkan
.reset_index(inplace=True)
setelah nama DataFrame:sumber
df.reset_index(level=[...])
Ini tidak benar-benar berlaku untuk kasus Anda tetapi bisa membantu orang lain (seperti saya 5 menit yang lalu) untuk mengetahuinya. Jika multindex seseorang memiliki nama yang sama seperti ini:
df.reset_index(inplace=True)
akan gagal, karena kolom yang dibuat tidak dapat memiliki nama yang sama.Maka Anda perlu mengganti nama multindex dengan
df.index = df.index.set_names(['Trial', 'measurement'])
untuk mendapatkan:Dan kemudian
df.reset_index(inplace=True)
akan bekerja seperti pesona.Saya mengalami masalah ini setelah pengelompokan berdasarkan tahun dan bulan pada kolom datetime (bukan indeks) yang disebut
live_date
, yang berarti bahwa tahun dan bulan dinamailive_date
.sumber
Seperti @ cs95 disebutkan dalam komentar, untuk menjatuhkan hanya satu level, gunakan:
df.reset_index(level=[...])
Ini menghindari keharusan mendefinisikan ulang indeks yang Anda inginkan setelah reset.
sumber