国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > Python基础教程 > Python中pandas的层级索引!

Python中pandas的层级索引!

头像

 Ly

2020-06-20 16:56:083389浏览 · 0收藏 · 0评论

1、认识层级索引

以下示例将创建一个 Series 对象, 索引 Index 由两个子 list 组成,第一个子 list 是外层索引,第二个 list 是内层索引:

>>> import pandas as pd
>>> import numpy as np
>>> obj = pd.Series(np.random.randn(12),index=[['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c', 'd', 'd', 'd'], [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2]])
>>> obj
a  0   -0.201536
   1   -0.629058
   2    0.766716
b  0   -1.255831
   1   -0.483727
   2   -0.018653
c  0    0.788787
   1    1.010097
   2   -0.187258
d  0    1.242363
   1   -0.822011
   2   -0.085682
dtype: float64

2、MultiIndex 索引对象

尝试打印上面示例中 Series 的索引类型,会得到一个 MultiIndex 对象,MultiIndex 对象的 levels 属性表示两个层级中分别有那些标签,codes 属性表示每个位置分别是什么标签,如下所示:

>>> import pandas as pd
>>> import numpy as np
>>> obj = pd.Series(np.random.randn(12),index=[['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c', 'd', 'd', 'd'], [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2]])
>>> obj
a  0    0.035946
   1   -0.867215
   2   -0.053355
b  0   -0.986616
   1    0.026071
   2   -0.048394
c  0    0.251274
   1    0.217790
   2    1.137674
d  0   -1.245178
   1    1.234972
   2   -0.035624
dtype: float64
>>> 
>>> type(obj.index)
<class 'pandas.core.indexes.multi.MultiIndex'>
>>> 
>>> obj.index
MultiIndex([('a', 0),
            ('a', 1),
            ('a', 2),
            ('b', 0),
            ('b', 1),
            ('b', 2),
            ('c', 0),
            ('c', 1),
            ('c', 2),
            ('d', 0),
            ('d', 1),
            ('d', 2)],
           )
>>> obj.index.levels
FrozenList([['a', 'b', 'c', 'd'], [0, 1, 2]])
>>>
>>> obj.index.codes
FrozenList([[0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3], [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2]])

通常可以使用 from_arrays() 方法来将数组对象转换为 MultiIndex 索引对象:

>>> arrays = [[1, 1, 2, 2], ['red', 'blue', 'red', 'blue']]
>>> pd.MultiIndex.from_arrays(arrays, names=('number', 'color'))
MultiIndex([(1,  'red'),
            (1, 'blue'),
            (2,  'red'),
            (2, 'blue')],
           names=['number', 'color'])

其他常用方法见下图:

p1.jpg

3、提取值

对于这种有多层索引的对象,如果只传入一个参数,则会对外层索引进行提取,其中包含对应所有的内层索引,如果传入两个参数,则第一个参数表示外层索引,第二个参数表示内层索引,示例如下:

>>> import pandas as pd
>>> import numpy as np
>>> obj = pd.Series(np.random.randn(12),index=[['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c', 'd', 'd', 'd'], [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2]])
>>> obj
a  0    0.550202
   1    0.328784
   2    1.422690
b  0   -1.333477
   1   -0.933809
   2   -0.326541
c  0    0.663686
   1    0.943393
   2    0.273106
d  0    1.354037
   1   -2.312847
   2   -2.343777
dtype: float64
>>> 
>>> obj['b']
0   -1.333477
1   -0.933809
2   -0.326541
dtype: float64
>>>
>>> obj['b', 1]
-0.9338094811708413
>>> 
>>> obj[:, 2]
a    1.422690
b   -0.326541
c    0.273106
d   -2.343777
dtype: float64

4、交换分层与排序

MultiIndex 对象的 swaplevel() 方法可以交换外层与内层索引,sortlevel() 方法会先对外层索引进行排序,再对内层索引进行排序,默认是升序,如果设置 ascending 参数为 False 则会降序排列,示例如下:

>>> import pandas as pd
>>> import numpy as np
>>> obj = pd.Series(np.random.randn(12),index=[['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c', 'd', 'd', 'd'], [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2]])
>>> obj
a  0   -0.110215
   1    0.193075
   2   -1.101706
b  0   -1.325743
   1    0.528418
   2   -0.127081
c  0   -0.733822
   1    1.665262
   2    0.127073
d  0    1.262022
   1   -1.170518
   2    0.966334
dtype: float64
>>> 
>>> obj.swaplevel()
0  a   -0.110215
1  a    0.193075
2  a   -1.101706
0  b   -1.325743
1  b    0.528418
2  b   -0.127081
0  c   -0.733822
1  c    1.665262
2  c    0.127073
0  d    1.262022
1  d   -1.170518
2  d    0.966334
dtype: float64
>>> 
>>> obj.swaplevel().index.sortlevel()
(MultiIndex([(0, 'a'),
            (0, 'b'),
            (0, 'c'),
            (0, 'd'),
            (1, 'a'),
            (1, 'b'),
            (1, 'c'),
            (1, 'd'),
            (2, 'a'),
            (2, 'b'),
            (2, 'c'),
            (2, 'd')],
           ), array([ 0,  3,  6,  9,  1,  4,  7, 10,  2,  5,  8, 11], dtype=int32))

更多Python知识,请点击Python视频教程!!

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

7777777亚洲和欧洲尺码表| 两个老头把我添高潮了| 门卫老王破校花处柳玉倩| 欧美电影免费观看电视剧大全| 满18岁免费观看高清电视剧大全| 他的手一路下滑| 日韩精品| 26个阴性外貌长相图片| 小正太主动要求戴肛塞尾巴的小猫| 高三妈妈用性缓解孩子压力 | 深圳英才网| 双飞儿媳妇和她闺蜜免费阅读| 《酒店激战》动漫1-5集免费观.. 《魅魔之耻》1~4集免费看 | 人野兽马狗猪大全| 蜜臀| 《酒店激战》动漫1-5集免费观.. 《恋爱订单~再来一份》动漫 | XX| 《请好好疼爱里面》免费观看| 美女和老板一起努力做豆浆 | JD又大又粗又长又硬受不了| 爱一个人真的有错吗| 班长哭了能不能再抠游戏里面的钱| 色的网站| 《魅魔之耻》1~4集免费看| 美国家庭式忌讳1-4| 免费B站看大片真人电视剧| 吃瓜群众在线爆料免费观看| 百度网址| 初中全封闭学校| 情满四合院 电视剧| 狠狠干影院| MD传媒破解版APP免费版| 快拨出天我是你母亲歌词监控| 中国时装秀视频| 《交换温柔》免费观看全集完整版| 成都私人情侣免费看电视剧的软件 | 《XL司令》第一季动漫免费播放| 小婕子太紧了太深了| 跳抖胸舞| 欧美大妈LOGO大全及价格图| 粘液共生1~3集免费观看动漫