我有以下數據框:大熊貓,重命名一個多指標列(數據的順序被改變)
{'e1.data_280': {0: 10, 1: 20, 2: 30},
'e1.data_603': {0: 7, 1: 8, 2: 9},
'e2.data_280': {0: 30, 1: 20, 2: 10},
'e2.data_603': {0: 8, 1: 9, 2: 1}}
後:
df.columns = df.columns.str.split('.', expand=True)
它看起來像:
現在我想擺脫短語data_
:
落後下劃線的三個數字:
cols = [item.split('_')[1] for item in df.columns.get_level_values(1)]
cols
['603', '280', '603', '280']
如果我取代舊的標籤:
df.columns.set_levels(cols, level=1, inplace=True)
的數據被更改:
我看到cols
比第1級多重索引的名稱多:
MultiIndex(levels=[['e1', 'e2'], ['data_280', 'data_603']],
labels=[[0, 0, 1, 1], [1, 0, 1, 0]])
但是,如何重命名數據框中第一級多索引列?
編輯:一種解決方法
df.unstack().reset_index()
與重命名列和分裂的列值一起工作:
我在運行代碼時似乎得到了你想要的結果。 – GiantsLoveDeathMetal
但是,當我通過'inplace = True'時遇到錯誤,但是所需的df是我沒有它的時候得到的。 – GiantsLoveDeathMetal
@GiantsLoveDeathMetal你運行的是什麼熊貓版本? – Moritz