【Pandas】(3)索引操作方法

8 阅读2分钟

Pandas 中的索引主要有两种形式:轴标签(行标签)和列名。

索引类型

Pandas 提供了多种索引类型,包括:

  • Index:最常见的索引类型,用于索引 DataFrame 的行。
  • Int64Index:整数索引,存储整数。
  • Float64Index:浮点数索引,存储浮点数。
  • DateTimeIndex:用于存储日期时间。
  • PeriodIndex:用于存储周期性数据。
  • CategoricalIndex:用于存储分类数据。

创建索引

当你创建一个 DataFrame 时,Pandas 会自动为其创建一个默认索引(从 0 开始的整数序列)。你也可以在创建 DataFrame 时指定索引。

import pandas as pd

# 使用默认索引
df_default_index = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})

# 指定索引
df_custom_index = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}, index=['a', 'b', 'c'])

索引操作

设置索引

使用 .set_index() 方法可以将 DataFrame 中的一个或多个列转换为索引。

df = df_custom_index.set_index('A')

重置索引

使用 .reset_index() 方法可以将索引转换回默认的整数索引。

df_reset = df.reset_index()

索引选择

选择行

使用 .loc[](基于标签)和 .iloc[](基于整数位置)可以选择行数据。

# 选择单行
row = df_custom_index.loc['a']

# 选择多行
rows = df_custom_index.iloc[0:2]
选择列

虽然列选择通常不是通过索引完成的,但是了解如何通过列名选择数据也是重要的。

# 选择单列
column = df_custom_index['A']

# 选择多列
columns = df_custom_index[['A', 'B']]

索引切片

Pandas 允许你对索引进行切片,选择数据的子集。

# 使用 loc 进行标签切片
df_slice = df_custom_index.loc['a':'b']

# 使用 iloc 进行位置切片
df_slice = df_custom_index.iloc[0:2]

索引的布尔选择

可以使用布尔数组进行索引选择。

# 布尔索引
df_boolean = df_custom_index[df_custom_index['A'] > 1]

索引的高级操作

多重索引(MultiIndex)

Pandas 支持多重索引,或称为层次化索引,允许你在一个轴上拥有多个(两个以上)索引级别。

index = pd.MultiIndex.from_tuples([('a', 1), ('a', 2), ('b', 1), ('b', 2)], names=['first', 'second'])
df_multi = pd.DataFrame({'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8]}, index=index)

索引重排序和级别交换

对于多重索引,你可以重排序索引或交换索引级别。

# 索引重排序
df_sorted = df_multi.sort_index(level=0)

# 索引级别交换
df_swapped = df_multi.swaplevel('first', 'second')