在pandas中,Series和DataFrame对象是介绍的最多的,Index对象作为其构成的一部分,相关的介绍内容却比较少。对于Index对象而言,有以下两大类别Index
MultiIndex
二者的区别就在于层级的多少,从字面含义也可以看出,MultiIndex指的是多层索引,Index是单层索引。
先从单层索引开始介绍,在声明数据框的时候,如果没有指定index和columns参数,pandas会自动生成对应的索引,示例如下
>>> import pandas as pd
>>> import numpy as np
>>> df = pd.DataFrame(np.random.rand(4, 4))
>>> df
0 1 2 3
0 0.776520 0.093637 0.819028 0.304640
1 0.130550 0.682061 0.102499 0.782682
2 0.995216 0.959426 0.337403 0.897070
3 0.253985 0.161841 0.536915 0.269828
>>> df.index
RangeIndex(start=0, stop=4, step=1)
>>> df.columns
RangeIndex(start=0, stop=4, step=1)从运行结果可以看出,默认的行列标签皆为一个RangeIndex对象。RangeIndex属于Index中的一种形式,Index是更通用的函数,通过Index函数可以显示创建Index对象,用法如下>>> df.index = pd.Index(list("ABCD"))
>>> df.columns = pd.Index(list("abcd"))
>>> df
a b c d
A 0.776520 0.093637 0.819028 0.304640
B 0.130550 0.682061 0.102499 0.782682
C 0.995216 0.959426 0.337403 0.897070
D 0.253985 0.161841 0.536915 0.269828上述方法生成的Index对象就是一个单层索引了,Index对象具有以下基本属性
>>> a = pd.Index(list("ABCD"))
>>> a
Index(["A", "B", "C", "D"], dtype="object")
# 值构成的数组
>>> a.array
["A", "B", "C", "D"]
Length: 4, dtype: object
# 数据类型
>>> a.dtype
dtype("O")
# level个数
>>> a.nlevels
1
# 维度
>>> a.ndim
1
# 尺寸
>>> a.shape
(4,)
# 个数
>>> a.size
4
# 值
>>> a.values
array(["A", "B", "C", "D"], dtype=object)除了常规的字符索引外,还有以下几种特定类型的索引
1. NumericIndex数值索引,其值为数值,可以是整数,也可以是浮点数。在pandas中,有以下几种方法,来显示创建数值索引
# 浮点数
>>> pd.Float64Index([1, 2, 3,