pandas不显示index_pandas层级索引

层级索引(hierarchical indexing)

下面创建一个Series, 在输入索引Index时,输入了由两个子list组成的list,

第一个子list是外层索引,第二个list是内层索引。

示例代码:

import pandas as pd

import numpy as np

ser_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]

])

print(ser_obj)

运行结果:

a 0 0.099174

1 -0.310414

2 -0.558047

b 0 1.742445

1 1.152924

2 -0.725332

c 0 -0.150638

1 0.251660

2 0.063387

d 0 1.080605

1 0.567547

2 -0.154148

dtype: float64

MultiIndex索引对象

打印这个Series的索引类型,显示是MultiIndex

直接将索引打印出来,可以看到有levels,和labels两个信息。levels表示两个层级中分别有哪些标签,labels是每个位置分别是什么标签。

示例代码:

print(type(ser_obj.index))

print(ser_obj.index)

运行结果:

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

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

选取子集

根据索引获取数据。因为现在有两层索引,当通过外层索引获取数据的时候,可以直接利用外层索引的标签来获取。

当要通过内层索引获取数据的时候,在list中传入两个元素,前者是表示要选取的外层索引,后者表示要选取的内层索引。

1. 外层选取:

ser_obj['outer_label']

示例代码:

# 外层选取

print(ser_obj['c'])

运行结果:

0 -1.362096

1 1.558091

2 -0.452313

dtype: float64

2. 内层选取:

ser_obj[:, 'inner_label']

示例代码:

# 内层选取

print(ser_obj[:, 2])

运行结果:

a 0.826662

b 0.015426

c -0.452313

d -0.051063

dtype: float64

常用于分组操作、透视表的生成等

交换分层顺序

1. swaplevel()

.swaplevel( )交换内层与外层索引。

示例代码:

print(ser_obj.swaplevel())

运行结果:

0 a 0.099174

1 a -0.310414

2 a -0.558047

0 b 1.742445

1 b 1.152924

2 b -0.725332

0 c -0.150638

1 c 0.251660

2 c 0.063387

0 d 1.080605

1 d 0.567547

2 d -0.154148

dtype: float64

交换并排序分层

sort_index()

.sort_index() 先对外层索引进行排序,再对内层索引进行排序,默认是升序。

示例代码:

# 交换并排序分层

print(ser_obj.swaplevel().sort_index())

运行结果:

0 a 0.099174

b 1.742445

c -0.150638

d 1.080605

1 a -0.310414

b 1.152924

c 0.251660

d 0.567547

2 a -0.558047

b -0.725332

c 0.063387

d -0.154148

dtype: float64

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值