3. MultiIndex

  1. MultiIndex代表的是多级索引对象。它继承自Index,其中的多级label采用元组对象来表示。在MultiIndex内部,并不直接保存元组对象,而是使用多个Index对象保存索引中每级的label

  2. class pandas.MultiIndex(levels=None, labels=None, sortorder=None, names=None, copy=False, verify_integrity=True, _set_identity=True, name=None, **kwargs)

    参数:

    • levels:一个数组的列表,给出了每一级的level

    • labels:一个数组的列表,给出了每一级level的下标。第ilabel是这样产生的:

      • 首先获取labels[i],它是一个下标序列,代表第 3. MultiIndex - 图1 级。
      • 假设第 k位置为整数 3,在第 3. MultiIndex - 图2 级第 3. MultiIndex - 图3位的label就是levels[i][3]
    • sortorder:一个整数,给出了已经排序好了的level级别。

    • names:一个字符串序列,给出了每个Indexname。其中每个级别对应一个Index

    • copy:一个布尔值。如果为True,则拷贝基础数据

    • verify_integrity:一个布尔值。如果为True,则检测各级别的label/level都是连续的且有效的

    • name:指定了本MultiIndex的名字

    你也可以通过下面的类方法来创建MultiIndex

    • MultiIndex.from_arrays(arrays[, sortorder, ...]):将二维序列转换为MultiIndex。其中arraysarray-like的序列,每个array-like按顺序的给出了一列label(一个级别)
    • MultiIndex.from_tuples(tuples[, sortorder, ...]) :将元组序列转换为MultiIndex。其中tuplestuple-like的序列,每个array-like按顺序的给出了一行label对(不同级别的一对)
    • MultiIndex.from_product(iterables[, ...]):根据多个可迭代对象生成一个MultiIndex,其中使用笛卡尔积的算法。其中iterables为可迭代对象的序列

    你也可以通过传递一个元组列表给Index(),并且将tupleize_cols设置为True来创建MultiIndex

    MultiIndex_create