📜  Pandas 多重索引(1)

📅  最后修改于: 2023-12-03 15:18:14.709000             🧑  作者: Mango

Pandas 多重索引

在数据分析和处理中,有时候需要处理具有多个维度的数据。Pandas 多重索引是一种强大的工具,可以在 Pandas Series 和 DataFrame 对象中使用多个级别的索引。

什么是多重索引?

多重索引(MultiIndex)是指在一个轴上拥有多个级别索引的数据结构。它可以理解为在一个普通的索引的基础上,再添加一个或多个索引层级。

多重索引的一个常见应用是处理具有层次结构的数据,例如时间序列数据,国家/地区统计数据,以及其他各种多维数据。

创建多重索引
Series 的多重索引

在创建多重索引的 Series 对象时,可以使用 pd.MultiIndex.from_tuples() 方法,通过元组(tuple)传递索引值:

import pandas as pd

index = pd.MultiIndex.from_tuples([('A', 1), ('A', 2), ('B', 1), ('B', 2)])
data = [10, 20, 30, 40]

series = pd.Series(data, index=index)

此时,series 是一个具有多重索引的 Series 对象,可以通过如下方式进行访问:

# 根据第一级索引访问
print(series['A'])

# 根据第一、第二级索引访问
print(series['A', 2])
DataFrame 的多重索引

创建具有多重索引的 DataFrame 是与创建多重索引的 Series 类似的过程。可以通过调用 pd.MultiIndex.from_tuples() 方法,传递列名和索引值的元组:

import pandas as pd

index = pd.MultiIndex.from_tuples([('A', 1), ('A', 2), ('B', 1), ('B', 2)])
columns = ['X', 'Y']

data = [[10, 20], [30, 40], [50, 60], [70, 80]]

df = pd.DataFrame(data, index=index, columns=columns)

此时,df 是一个具有多重索引的 DataFrame 对象,可以通过如下方式进行访问:

# 根据第一级索引访问
print(df.loc['A'])

# 根据第一、第二级索引访问
print(df.loc['A', 2])
多重索引的操作

Pandas 提供了一些强大的方法来操作多重索引。

重置索引

可以使用 reset_index() 方法重置多重索引,默认重置所有索引列。也可以指定要重置的特定索引层级。该方法将多重索引对象转换为单级索引的对象。

df_reset = df.reset_index()
设置索引

可以使用 set_index() 方法为 DataFrame 对象设置多重索引。此方法将一个或多个列设置为索引,可以设置一个或多个层级。

df_set = df.set_index(['X', 'Y'])
索引切片

通过使用 .loc[] 可以方便地对多重索引进行切片操作,可以切片特定索引层级,也可以切片特定索引范围。

# 切片特定索引层级
print(df.loc['A'])

# 切片特定索引范围
print(df.loc[('A', 2):('B', 1)])
总结

Pandas 多重索引是处理具有多个维度数据的有用工具。它可以帮助我们在 Series 和 DataFrame 对象中使用多个级别的索引,进行方便的数据操作和切片。

此外,Pandas 还提供了很多其他有关多重索引的方法和功能,可以根据具体情况选择使用。对于理解和处理多维数据,多重索引是程序员必备的技能之一。