当前位置:   article > 正文

python嵌套列表索引 index_Python--MultiIndex多层次索引学习

pythom 字典 值为int64index

Python3 pandas.MultiIndex 概述

层次化索引(hierarchical indexing)在一个轴上拥有多个(两个以上)索引级别,使用户能以低维度形式处理高维度数据。

levels:每个等级上轴标签的唯一值

labels:以整数来表示每个level上标签的位置

sortorder:按照指定level上的标签名称的字典顺序进行排序(可选参数)

names:index level的名称

copy:布尔值,默认为False。是否拷贝元数据产生新的对象

verify_integrity:布尔值,默认为Ture。检查levels/labels是否持续有效

入门级demo学习

#!/usr/bin/python3

# -*- coding: utf-8 -*-

# @Time : 2019-06-13 10:11

# @Author : LiYahui

# @Description : python multiindex demo

import pandas as pd

import numpy as np

data = pd.Series(np.random.randn(10),

index=[['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'd', 'd'],

[1, 2, 3, 1, 2, 3, 1, 2, 2, 3]])

print("----------print data---------------")

print(data)

'''

a 1 -0.902378

2 -1.512923

3 -1.082350

b 1 -0.900975

2 -1.723988

3 -0.791613

c 1 -1.631530

2 2.290227

d 2 0.530892

3 1.199453

dtype: float64

'''

print("----------print data.index-------------")

print(data.index)

'''

MultiIndex(levels=[['a', 'b', 'c', 'd'], [1, 2, 3]],

codes=[[0, 0, 0, 1, 1, 1, 2, 2, 3, 3], [0, 1, 2, 0, 1, 2, 0, 1, 1, 2]])

'''

print("----------print data.index.levels[0]----------------")

print(data.index.levels[0])

'''

Index(['a', 'b', 'c', 'd'], dtype='object')

'''

print("----------print data.index.levels[1]----------------")

print(data.index.levels[1])

'''

Int64Index([1, 2, 3], dtype='int64')

'''

总结分析如下:

level中的唯一标签值集合分别为[‘a’, ‘b’, ‘c’, ‘d’]和[1, 2, 3]。

data.index.levels[0]上的标签abcd对应的索引为0123。data.index.levels[1]上的标签123对应的索引为012。

外层level的label值[0, 0, 0, 1, 1, 1, 2, 2, 3, 3]表示对应的标签值分别出现几次:a和b为3次,c和d为2次

内层level的label值[0, 1, 2, 0, 1, 2, 0, 1, 1, 2]按个数与外层label相对应。例如:外层a出现3次,则内层label的前3个值与a相对应,这三个索引值为0,1,2,分别对应1,2,3。

MultiIndex创建的方式

第一种

我们在创建Series或DataFrame时,可以通过给index(columns)参数传递多维数组,进而构建多维索引。【数组中每个维度对应位置的元素,组成每个索引值】

多维索引的也可以设置名称(names属性),属性的值为一维数组,元素的个数需要与索引的层数相同(每层索引都需要具有一个名称)。

#!/usr/bin/python3

# -*- coding: utf-8 -*-

# @Time : 2019-06-13 10:52

# @Author : LiYahui

# @Description : MultiIndex demo

import pandas as pd

import numpy as np

# 创建多层索引的第一种方式

# 创建Series对象,具有单层索引。

s1 = pd.Series([1, 2, 3], index=["a", "b", "c"])

print(s1)

'''

a 1

b 2

c 3

dtype: int64

'''

# 创建多层索引。多层索引需要一个二维的数组,每个元素(一维数组)来指定每个层级的索引。顺序

# 由高层(左边)到底层(右边)。

s2 = pd.Series([1, 2, 3, 4], index=[["a", "a", "b", "b"], ["c", "d", "e", "f"], ["m", "m", "k", "t"]])

print(s2)

'''

a c m 1

d m 2

b e k 3

f t 4

dtype: int64

'''

print("-------df--------")

df = pd.DataFrame(np.random.random(size=(4, 4)), index=[["上半年", "上半年&#

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/463450
推荐阅读
相关标签
  

闽ICP备14008679号