pandas 笔记:multi-index

Posted UQI-LIUWJ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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.479318
    2	-0.471594
    3	-1.550214
d	1	0.329446
    2	-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.407190
    2	1.193368
d	1	-0.343165
    2	-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的主要内容,如果未能解决你的问题,请参考以下文章

python pandas multi-index在满足条件的索引级别内选择所有[重复]

Pandas 使用索引名称作为列名创建 Dataframe

pandas:如何使用多索引运行数据透视?

Pandas Pivot Table - 重新组织多索引的顺序

Pandas学习笔记

pandas笔记