看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
(编码题)根据以下要求构造一些 pandas 的多层索引(MultiIndex)对象?
Python 代码如下:
# 构造一个多层索引(MultiIndex)对象
import pandas as pd
# 构造 MultiIndex
# 方法1
pd.MultiIndex.from_product([['a', 'b'], [1, 2]])
# 方法 2
pd.MultiIndex(
# 第一层 'a', 'b' 和 第二层 1, 2 的标签
levels=[['a', 'b'], [1, 2]],
# 编码表示 ('a', 1), ('a', 2), ('b', 1), ('b', 2)
codes=[[0, 0, 1, 1], [0, 1, 0, 1]],
)
# 方法 3
pd.MultiIndex.from_arrays(
# 两个数组,第一层 'a', 'b',第二层 1, 2
[['a', 'a', 'b', 'b'], [1, 2, 1, 2]],
)
# 方法 4
pd.MultiIndex.from_tuples(
[('a', 1), ('a', 2),
('b', 1), ('b', 2)], # 每个元组代表一个索引条目
)
'''
MultiIndex([('a', 1),
('a', 2),
('b', 1),
('b', 2)],
)
'''
# 方法 5
dfidx = pd.DataFrame({
'x': ['a', 'a', 'b', 'b'],
'y': [1, 2, 1, 2]
})
# 使用 from_frame 创建 MultiIndex
pd.MultiIndex.from_frame(dfidx)
# 多层索引的两层分别起名称为 x 和 y
pd.MultiIndex.from_product([['a', 'b'], [1, 2]], names=['x', 'y'])
'''
MultiIndex([('a', 1),
('a', 2),
('b', 1),
('b', 2)],
names=['x', 'y'])
'''
应用在行列的索引上:
import pandas as pd
import numpy as np
np.random.seed(666)
data = np.random.randint(0, 99,
size=[4, 4])
midx = pd.MultiIndex.from_product([['a', 'b'], [1, 2]])
# 行索引上
pd.DataFrame(data, index=midx)
'''
0 1 2 3
a 1 2 45 30 62
2 70 73 30 36
b 1 61 91 94 51
2 60 95 28 14
'''
# 列索引上
pd.DataFrame(data, columns=midx)
'''
a b
1 2 1 2
0 2 45 30 62
1 70 73 30 36
2 61 91 94 51
3 60 95 28 14
'''
查看相关链接中的知识。
(完)
更新时间:Oct. 23, 2024, 7:56 p.m. 标签:pandas python 习题 索引 多层索引