如何更改多索引数据框中的索引
Posted
技术标签:
【中文标题】如何更改多索引数据框中的索引【英文标题】:How change index in multiindex dataframe 【发布时间】:2021-03-08 02:07:12 【问题描述】:我有一个多索引熊猫数据框,例如:
col1 col2 col3 col4 col5
ix iy
0 14 True 1 1 1 1
25 True 1 1 1 1
27 True 1 1 0 1
28 True 1 1 1 0
43 True 1 1 1 1
1 12 True 1 1 1 1
38 True 1 1 1 1
2 0 True 1 1 0 1
1 True 1 1 1 0
如何通过向它们添加常量值来更改索引?例如ix + 5
和iy + 10
:
col1 col2 col3 col4 col5
ix iy
5 24 True 1 1 1 1
35 True 1 1 1 1
37 True 1 1 0 1
38 True 1 1 1 0
53 True 1 1 1 1
6 22 True 1 1 1 1
48 True 1 1 1 1
7 10 True 1 1 0 1
11 True 1 1 1 0
【问题讨论】:
【参考方案1】:您可以使用元组和MultiIndex.from_tuples
重新创建新的MultiIndex
:
L = [(a + 5, b + 10) for a, b in df.index]
df = df.set_index(pd.MultiIndex.from_tuples(L, names=df.index.names))
print (df)
col1 col2 col3 col4 col5
ix iy
5 24 True 1 1 1 1
35 True 1 1 1 1
37 True 1 1 0 1
38 True 1 1 1 0
53 True 1 1 1 1
6 22 True 1 1 1 1
48 True 1 1 1 1
7 10 True 1 1 0 1
11 True 1 1 1 0
MultiIndex.set_levels
的另一个想法:
df.index = df.index.set_levels(df.index.levels[0] + 5, level=0)
df.index = df.index.set_levels(df.index.levels[1] + 10, level=1)
print (df)
col1 col2 col3 col4 col5
ix iy
5 24 True 1 1 1 1
35 True 1 1 1 1
37 True 1 1 0 1
38 True 1 1 1 0
53 True 1 1 1 1
6 22 True 1 1 1 1
48 True 1 1 1 1
7 10 True 1 1 0 1
11 True 1 1 1 0
【讨论】:
以上是关于如何更改多索引数据框中的索引的主要内容,如果未能解决你的问题,请参考以下文章