Pandas Index 对象

Pandas 的 Index 对象是用于标识轴标签的基类,它提供了丰富的功能来表示和管理数据的索引。

以下是 Index 对象的一些关键特性和用途:

  • 唯一标识Index 对象为数据提供唯一的标识符,这对于数据的选择和操作至关重要。
  • 标签基础:与基于位置的索引(如 Python 列表的索引)不同,Index 允许基于标签的索引,这使得数据操作更加直观和灵活。
  • 数据类型支持Index 可以容纳多种类型的数据,包括整数、浮点数、字符串、日期时间等。

Pandas 提供了几种不同的 Index 类型,用于不同的场景:

  • RangeIndex:一个内存节省型的整数值索引对象,类似于 Python 的 range 对象。
  • Index:最基本的索引类型,可以包含任何类型的数据。
  • MultiIndex:一个多级索引,允许你拥有多个索引级别,类似于数据框架中的多个列。
  • DatetimeIndex:一个针对日期时间数据优化的索引,提供了日期时间相关的功能。
  • PeriodIndex:基于时间段的索引,例如年、季度等。
  • TimedeltaIndex:基于时间差(Δt)的索引。

Index 构造函数

类/方法 描述
pd.Index(data, dtype, name) 创建一个 Index 对象,支持自定义数据、数据类型和名称。

Index 属性

属性 描述
Index.values 返回 Index 的数据部分(numpy 数组)。
Index.dtype 返回 Index 的数据类型。
Index.name 返回或设置 Index 的名称。
Index.shape 返回 Index 的形状(元组形式)。
Index.size 返回 Index 中元素的数量。
Index.nlevels 返回 Index 的层级数(对于 MultiIndex)。
Index.is_unique 检查 Index 中的值是否唯一。
Index.is_monotonic 检查 Index 是否单调递增。
Index.is_monotonic_decreasing 检查 Index 是否单调递减。
Index.has_duplicates 检查 Index 是否有重复值。
Index.empty 检查 Index 是否为空。

Index 方法

数据操作

方法 描述
Index.append(other) 将另一个 Index 追加到当前 Index。
Index.drop(labels) 删除指定的标签。
Index.insert(loc, item) 在指定位置插入元素。
Index.unique() 返回 Index 中的唯一值。
Index.drop_duplicates() 删除重复值。
Index.sort_values() 按值排序。
Index.sort_values(ascending=False) 按值降序排序。
Index.tolist() 将 Index 转换为列表。
Index.to_numpy() 将 Index 转换为 numpy 数组。
Index.to_frame() 将 Index 转换为 DataFrame。
Index.astype(dtype) 将 Index 转换为指定数据类型。
Index.map(func) 对 Index 中的每个元素应用函数。
Index.where(cond, other) 根据条件替换值。
Index.mask(cond, other) 根据条件替换值(与 where 相反)。

索引操作

方法 描述
Index.get_loc(key) 返回指定标签的位置。
Index.get_indexer(target) 返回目标 Index 在当前 Index 中的位置。
Index.slice_locs(start, end) 返回指定范围的切片位置。
Index.intersection(other) 返回两个 Index 的交集。
Index.union(other) 返回两个 Index 的并集。
Index.difference(other) 返回两个 Index 的差集。
Index.symmetric_difference(other) 返回两个 Index 的对称差集。
Index.isin(values) 检查 Index 中的值是否在指定列表中。
Index.reindex(target) 根据目标 Index 重新索引。
Index.reindex_like(other) 根据另一个 Index 重新索引。

统计计算

方法 描述
Index.min() 返回 Index 中的最小值。
Index.max() 返回 Index 中的最大值。
Index.argmin() 返回最小值的索引位置。
Index.argmax() 返回最大值的索引位置。
Index.value_counts() 返回 Index 中每个值的频率。

MultiIndex 方法

方法 描述
pd.MultiIndex.from_arrays() 从数组创建 MultiIndex。
pd.MultiIndex.from_tuples() 从元组创建 MultiIndex。
pd.MultiIndex.from_product() 从笛卡尔积创建 MultiIndex。
MultiIndex.levels 返回 MultiIndex 的层级。
MultiIndex.codes 返回 MultiIndex 的编码。
MultiIndex.swaplevel(i, j) 交换两个层级的位置。
MultiIndex.droplevel(level) 删除指定层级。
MultiIndex.set_levels(levels) 设置 MultiIndex 的层级。
MultiIndex.set_codes(codes) 设置 MultiIndex 的编码。

实例

实例

import pandas as pd

# 创建 Index
idx = pd.Index([1, 2, 3], name='MyIndex')

# 查看属性
print(idx.values)  # 输出数据部分
print(idx.name)    # 输出名称

# 数据操作
idx_new = idx.append(pd.Index([4, 5]))
print(idx_new)  # 输出追加后的 Index

# 索引操作
print(idx.get_loc(2))  # 输出标签 2 的位置

# MultiIndex 操作
arrays = [[1, 1, 2, 2], ['A', 'B', 'A', 'B']]
multi_idx = pd.MultiIndex.from_arrays(arrays, names=('Num', 'Letter'))
print(multi_idx)

如果需要更详细的信息,可以参考 Pandas 官方文档