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')