看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
MultiIndex 对象是 Pandas 标准 Index 的子类,由它来表示多层索引业务。 可以将 MultiIndex 视为一个元组对数组,其中每个元组对都是唯一的。
下边是一个 DataFrame 中应用多索引的例子。
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'])
上述多层索引第一层名为 number 有 1、2 两个,第二层名为 color,每个 number 下有 red 和 blue 两个。
pd.DataFrame([{'a':1, 'b':2}], index=index)
'''
a b
number color
1 red 1 2
blue 1 2
2 red 1 2
blue 1 2
'''
以上将索引应用到了 DataFrame 中。
以下多层索引案例为创建应用到 Series 中的例子,DataFrame 中是一样的。例子中都是创建行索引,列索引也是一样的。
上文的例子就是一个用 arrays 创建的例子。
arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'],
['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']]
tuples = list(zip(*arrays))
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
pd.Series(np.random.randn(8), index=index)
'''
first second
bar one 1.922850
two -1.044463
baz one 1.258210
two 0.070224
foo one 1.283883
two 0.212925
qux one -0.944366
two -0.416257
dtype: float64
'''
numbers = [0, 1, 2]
colors = ['green', 'purple']
index = pd.MultiIndex.from_product([numbers, colors],
names=['number', 'color'])
pd.Series(np.random.randn(6), index=index)
'''
number color
0 green 0.126398
purple 1.070622
1 green -0.397007
purple 1.516593
2 green -1.588016
purple 0.178958
dtype: float64
'''
df = pd.DataFrame([['bar', 'one'], ['bar', 'two'],
['foo', 'one'], ['foo', 'two']],
columns=['first', 'second'])
'''
first second
0 bar one
1 bar two
2 foo one
3 foo two
'''
index = pd.MultiIndex.from_frame(df)
pd.Series(np.random.randn(4), index=index)
'''
first second
bar one -0.213704
two -0.598740
foo one -1.531589
two -1.628074
dtype: float64
'''
更新时间:2022-04-04 10:24:14 标签:分层索引 索引 pandas