📅  最后修改于: 2023-12-03 15:18:14.709000             🧑  作者: Mango
在数据分析和处理中,有时候需要处理具有多个维度的数据。Pandas 多重索引是一种强大的工具,可以在 Pandas Series 和 DataFrame 对象中使用多个级别的索引。
多重索引(MultiIndex)是指在一个轴上拥有多个级别索引的数据结构。它可以理解为在一个普通的索引的基础上,再添加一个或多个索引层级。
多重索引的一个常见应用是处理具有层次结构的数据,例如时间序列数据,国家/地区统计数据,以及其他各种多维数据。
在创建多重索引的 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 是与创建多重索引的 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 还提供了很多其他有关多重索引的方法和功能,可以根据具体情况选择使用。对于理解和处理多维数据,多重索引是程序员必备的技能之一。