2. Index

  1. class pandas.Index(data=None, dtype=None, copy=False, name=None, fastpath=False, tupleize_cols=True):创建Index对象。

    参数:

    • data:一个array-like,必须是一维的
    • name:一个字符串,为Index的名字。
    • dtype:指定数据类型。如果为None,则默认为object
    • copy:一个布尔值。如果为True,则拷贝输入数据data
    • tupleize_cols:一个布尔值,如果可能则尽量创建MultiIndex对象

    create

  2. Index对象负责管理轴label和其他元数据(比如轴name)。构建Series/DataFrame时,传给index/columns关键字的任何数组或者序列都将被转化成一个IndexIndex 对象是immutable,因此用户无法对其进行修改。这样才能够使得Index对象在多个数据结构之间安全共享

  3. 存在多种索引类型。

    • Index:最泛化的Index对象,将轴label表示为一个Python对象组成的Numpy数组
    • Int64Index:针对整数的特殊Index
    • MultiIndex:层次化索引对象,表示单个轴上的多层索引。可以看做由元组组成的数组
    • DatatimeIndex:存储纳秒级时间戳,用numpydatatime64类型表示
    • PeriodIndex:针对Period数据(时间间隔)的特殊Index
  4. Index的功能类似一个固定大小的集合。其类似于集合的方法有(因为Index不可变,因此返回的都是新的Index对象):

    • .copy([name,deep,dtype]):返回一份Index的拷贝。
    • .append(other):连接另一个Index对象,产生一个新的Index对象。注意重复的label并不会合并
    • .difference(other):计算差集,返回一个Index对象
    • .intersection(other):计算交集,返回一个Index对象
    • .union(other):计算并集,返回一个新的Index对象
    • .isin(values[, level]):计算Index中各label是否在values
    • .delete(loc):删除下标loc处的元素,得到新的Index
    • .drop(labels[, errors]):删除传入的labels,得到新的Index
    • .insert(loc, item):在指定下标位置插入值,得到新的Index
    • .unique():返回Index中唯一值的数组,得到新的Index

    method_set

  5. 我们可以将Index转换成其他数据类型:

    • .astype(dtype,[,copy]):转换成另一个数据类型的Index,其labeldtype被转换成指定的值
    • .tolist():转换成列表
    • .to_series(**kwargs):转换成SeriesSeries的数据和label相同

    transform

  6. Index提供的选取方法有:

    • .get_indexer(target[, method, limit, ...]) :获取target(一个Index对象)对应的下标列表。

      • target:一个Index对象。我们要考察的就是Index中的每个labelself中的下标序列。

      • method:指定label的匹配方法。可以为None,表示严格匹配(如果不存在则下标为 -1)。如果为'pad'/'ffill',则:若未找到匹配的,则使用前向匹配。如果为'backfill'/'bfill',则:若未找到匹配的,则使用后向匹配。如果为'nearest',则:若未找到匹配的,则使用最近邻匹配。

        匹配时,假设你的Indexlabel是有序排列的(要么是升序,要么是降序)

      • limit:一个整数,指定前向/后向/最近填充时:如果有连续的kNaN,则只填充其中limit个。

      • tolerance:一个整数,用于给出在不匹配时,连续采用前向/后向/最近邻匹配的跨度的最大值。

    • .get_level_values(level):返回指定levelIndex,用于MultiIndex

    • .get_loc(key[, method, tolerance]):返回指定label处的下标,由key指定。其中methodtolerance参数见上述。如果method=None,且key指定的label找不到,则抛出异常。

    • .get_value(series, key):寻找Series指定label处的值。若key指定的label找不到,则抛出异常。

    • .slice_locs([start, end, step, kind]):计算给定start labelend label之间的下标序列,返回代表该下标序列的切片或者数组。其中不包括endselect