How to Reindex MultiIndex Dataframe on Multiple Levels?(如何在多个层次上对多索引数据帧进行重新索引?)
本文介绍了如何在多个层次上对多索引数据帧进行重新索引?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我当前有以下聚合的数据帧,并且我有一个多索引,如下所示:
Date Country_Band Value Decimal
May 2021 Non-US 2-14 0.11
US 2-14 0.22
1 0.33
15+ 0.44
Non-US 1 0.55
15+ 0.66
我想以某种方式对它们进行组织和分组,以获得以下内容:
Date Country_Band Value Decimal
May 2021 US 1 0.33
2-14 0.22
15+ 0.44
Non-US 1 0.55
2-14 0.11
15+ 0.66
这是较大数据帧的索引。我首先尝试执行以下代码:
df_march_agg = df_march_agg.reindex(['US', 'Non-US'], level='Country_Band')
它在获取国家/地区波段组时起作用,但是,该值仍然不是按数字顺序排列的:
Date Country_Band Value Decimal
May 2021 US 2-14 0.22
1 0.33
15+ 0.44
Non-US 2-14 0.11
1 0.55
15+ 0.66
我随后尝试了同样的操作:
df_march_agg = df_march_agg.reindex(['1', '2-14', '15+'], level='Value')
但这随后取消了先前的重新索引。你知道我遗漏了什么或需要添加什么才能让两者都井然有序吗?
干杯!
推荐答案
MultiIndex.set_levels
中包含有序类别的一个概念,因此可以使用DataFrame.sort_index
:
df.index = (df.index.set_levels(pd.CategoricalIndex(df.index.levels[1],
ordered=True,
categories=['US', 'Non-US']),
level=1)
.set_levels(pd.CategoricalIndex(df.index.levels[2],
ordered=True,
categories=['1', '2-14', '15+']),
level=2))
df = df.sort_index()
print (df)
Decimal
Date Country_Band Value
May 2021 US 1 0.33
2-14 0.22
15+ 0.44
Non-US 1 0.55
2-14 0.11
15+ 0.66
DataFrame.reindex
与MultiIndex.from_product
的另一个想法:
mux = pd.MultiIndex.from_product([['May 2021'],
['US', 'Non-US'],
['1', '2-14', '15+']],
names=['Date','Country_Band','Value'])
df = df.reindex(mux)
print (df)
Decimal
Date Country_Band Value
May 2021 US 1 0.33
2-14 0.22
15+ 0.44
Non-US 1 0.55
2-14 0.11
15+ 0.66
这篇关于如何在多个层次上对多索引数据帧进行重新索引?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:如何在多个层次上对多索引数据帧进行重新索引?
猜你喜欢
- YouTube API v3 返回截断的观看记录 2022-01-01
- CTR 中的 AES 如何用于 Python 和 PyCrypto? 2022-01-01
- ";find_element_by_name(';name';)";和&QOOT;FIND_ELEMENT(BY NAME,';NAME';)";之间有什么区别? 2022-01-01
- 使用 Cython 将 Python 链接到共享库 2022-01-01
- 如何使用PYSPARK从Spark获得批次行 2022-01-01
- 我如何卸载 PyTorch? 2022-01-01
- 计算测试数量的Python单元测试 2022-01-01
- 检查具有纬度和经度的地理点是否在 shapefile 中 2022-01-01
- 使用公司代理使Python3.x Slack(松弛客户端) 2022-01-01
- 我如何透明地重定向一个Python导入? 2022-01-01