首页 > 编程知识 正文

pandas常用索引方式有哪些,python的pandas行数和索引

时间:2023-05-05 04:08:27 阅读:283785 作者:2852

Python中pandas的层级索引是什么

发布时间:2020-06-24 13:45:03

来源:亿速云

阅读:98

作者:清晨

不懂Python中pandas的层级索引是什么?其实想解决这个问题也不难,下面让小编带着大家一起学习怎么去解决,希望大家阅读完这篇文章后大所收获。

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)

>>>

>>> 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'])

其他常用方法见下图:

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中pandas的层级索引是什么内容对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,遇到问题就找亿速云,详细的解决方法等着你来学习!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。