pandas 笔记:multi-index
生活随笔
收集整理的这篇文章主要介绍了
pandas 笔记:multi-index
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
多维度索引
1 前言
比如我们有这么一个DataFrame
data = pd.DataFrame(np.random.randn(5),index=[['a', 'a', 'a', 'd','d'],[1, 2, 3, 1, 2]])那么此时有两列index ,这就是multi-index
mindex = data.index mindex ''' MultiIndex([('a', 1),('a', 2),('a', 3),('d', 1),('d', 2)],) '''2 属性
2.1 levels
不同层级上的属性值
mindex.levels #FrozenList([['a', 'd'], [1, 2, 3]])2.2 codes
不同层级上索引元素的位置
mindex.codes # FrozenList([[0, 0, 0, 1, 1], [0, 1, 2, 0, 1]])表示第一个索引('a','d') 0号(也就是'a')对应的是第一个列表元素为0的行(前三行);1号(也就是'd')对应的是第一个列表元素为1的行(后两行)
第二个索引(1 2 3) 0号(也就是1)对应的是第二个列表元素为0的行(第一行第四行);1号(也就是'2')对应的是第二个列表元素为1的行(第二行第五行);2号(也就是3)对应的是第二个列表元素为2的行(第三行)
2.3 names
索引的名称(我们这里是没有)
mindex.names #FrozenList([None, None])3 构建多层索引
3.1 直接DataFrame 构建
data = pd.DataFrame(np.random.randn(5),index=[['a', 'a', 'a', 'd','d'],[1, 2, 3, 1, 2]]) data'''0 a 1 -0.4793182 -0.4715943 -1.550214 d 1 0.3294462 -0.607804 ''''3.2 从列表转化
两个列表相同索引的元素组成一个index
mindex = pd.MultiIndex.from_arrays([['a-', 'a-', 'a-', 'a-', 'd-'],[-1, -2, -3, -1, -2]])data.reindex(mindex) '''0 a- -1 NaN-2 NaN-3 NaN-1 NaN d- -2 NaN '''3.3 从元组转化
mindex = pd.MultiIndex.from_tuples([('a',1), ('a',2), ('b',1)]) data.reindex(mindex) '''0 a 1 -1.407190 2 1.193368 b 1 NaN '''每一个元组中的元素组成一个index
3.4 使用两个列表的笛卡尔乘积转化
mindex = pd.MultiIndex.from_product([['a','d'], [1,2]]) data.reindex(mindex)'''0 a 1 -1.4071902 1.193368 d 1 -0.3431652 -0.112372 '''4 转换多维索引的顺序
将第0维和第一维的索引交换
data.swaplevel(0,1) '''0 1 a -1.407190 2 a 1.193368 3 a -0.352287 1 d -0.343165 2 d -0.112372 '''总结
以上是生活随笔为你收集整理的pandas 笔记:multi-index的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: pandas 笔记:聚合函数agg
- 下一篇: 硬阈值 软阈值