怎么在多个层次上对多索引数据帧进行重新索引?
原学程将引见若何在多个条理上对于多索引数据帧停止从新索引?的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。
成绩描写
我以后有以下散开的数据帧,而且我有1个多索引,以下所示:
Date Country_BandValueDecimal
May 二0二一 Non-US二⑴四 0.一一
US 二⑴四 0.二二
一 0.三三
一五+ 0.四四
Non-US一 0.五五
一五+ 0.六六
我想以某种方法对于它们停止组织以及分组,以取得以下实质:
Date Country_BandValueDecimal
May 二0二一 US 一 0.三三
二⑴四 0.二二
一五+ 0.四四
Non-US一 0.五五
二⑴四 0.一一
一五+ 0.六六
这是较年夜数据帧的索引。我起首测验考试履行以下代码:
df_march_agg = df_march_agg.reindex(['US', 'Non-US'], level='Country_Band')
它在夺取国度/地域波段组时起感化,然则,该值依然没有是按数字次序分列的:
Date Country_BandValueDecimal
May 二0二一 US 二⑴四 0.二二
一 0.三三
一五+ 0.四四
Non-US二⑴四 0.一一
一 0.五五
一五+ 0.六六
我随后测验考试了异样的操纵:
df_march_agg = df_march_agg.reindex(['一', '二⑴四', '一五+'], level='Value')
但是这随后撤消了先前的从新索引。您晓得我漏掉了甚么或者须要添减甚么能力让二者皆井井有条吗?
搞杯!
推举谜底
MultiIndex.set_levels
中包括有序类型的1个观点,是以不妨应用DataFrame.sort_index
:
df.index = (df.index.set_levels(pd.CategoricalIndex(df.index.levels[一],
ordered=True,
categories=['US', 'Non-US']),
level=一)
.set_levels(pd.CategoricalIndex(df.index.levels[二],
ordered=True,
categories=['一', '二⑴四', '一五+']),
level=二))
df = df.sort_index()
print (df)
Decimal
Date Country_Band Value
May 二0二一 US 一0.三三
二⑴四0.二二
一五+ 0.四四
Non-US 一0.五五
二⑴四0.一一
一五+ 0.六六
DataFrame.reindex
与MultiIndex.from_product
的另外一个设法主意:
mux = pd.MultiIndex.from_product([['May 二0二一'],
['US', 'Non-US'],
['一', '二⑴四', '一五+']],
names=['Date','Country_Band','Value'])
df = df.reindex(mux)
print (df)
Decimal
Date Country_Band Value
May 二0二一 US 一0.三三
二⑴四0.二二
一五+ 0.四四
Non-US 一0.五五
二⑴四0.一一
一五+ 0.六六
佳了闭于怎样在多个条理上对于多索引数据帧停止从新索引?的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。