在 pandas
中,MultiIndex
是一种特殊的索引类型,它允许你在 Series
或 DataFrame
中使用多个索引级别(即多级索引)。这使得你可以在一个轴上拥有多个维度的数据,从而可以更灵活地组织和分析数据。
创建 MultiIndex
-
使用
pd.MultiIndex.from_arrays
方法: 你可以从多个数组列表中创建一个MultiIndex
。import pandas as pd arrays = [ ['John', 'John', 'Lisa', 'Lisa'], ['Accounting', 'Engineering', 'Accounting', 'Engineering'] ] tuples_index = pd.MultiIndex.from_arrays(arrays, names=('Name', 'Department')) # 创建一个示例 DataFrame df = pd.DataFrame({'Salary': [70000, 80000, 75000, 90000]}, index=tuples_index) print(df)
-
使用
pd.MultiIndex.from_tuples
方法: 如果你已经有了一个元组列表,可以直接使用这个方法。tuples_index = pd.MultiIndex.from_tuples([ ('John', 'Accounting'), ('John', 'Engineering'), ('Lisa', 'Accounting'), ('Lisa', 'Engineering') ], names=('Name', 'Department')) df = pd.DataFrame({'Salary': [70000, 80000, 75000, 90000]}, index=tuples_index) print(df)
-
使用
pd.MultiIndex.from_product
方法: 这个方法允许你创建一个笛卡尔积的多级索引。tuples_index = pd.MultiIndex.from_product([ ['John', 'Lisa'], ['Accounting', 'Engineering'] ], names=('Name', 'Department')) df = pd.DataFrame({'Salary': [70000, 80000, 75000, 90000]}, index=tuples_index) print(df)
操作 MultiIndex
-
选择数据: 你可以通过索引的级别来选择数据。
print(df.xs('John', level='Name')) # 选择名为 John 的行 print(df.loc[('John', 'Engineering')]) # 选择 John 在 Engineering 部门的记录
-
重置索引: 如果你想要将多级索引转换回单级索引,可以使用
reset_index
方法。df_reset = df.reset_index() print(df_reset)
-
索引的层次结构操作: 你可以添加、删除或重新排序索引的级别。
df = df.reorder_levels(['Department', 'Name']) print(df)
-
索引的切片: 你可以使用切片来选择多级索引的一部分。
print(df.loc[('Accounting', ':')]) # 选择所有在 Accounting 部门的记录
MultiIndex
提供了非常强大的数据组织能力,使得复杂的数据结构可以被有效地管理和分析。在处理具有多个分类变量的数据时,MultiIndex
尤其有用。