看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
pandas.MultiIndex.from_arrays
是一个类方法,用于通过多个数组创建 MultiIndex
对象。这个方法特别适合处理多个层次的数据,每个数组代表 MultiIndex
的一个层次,最终将这些数组组合成层次化的索引。
classmethod MultiIndex.from_arrays(
arrays,
sortorder=None,
names=<no_default>
)
arrays
:
必须传递的参数。它是一个包含数组或类似序列的列表(如列表或 NumPy 数组),每个数组代表 MultiIndex
的一个层次。
MultiIndex
的不同层次。例如,如果传入两个数组,第一个数组将用于第一层索引,第二个数组将用于第二层索引。sortorder
:
可选参数。指定排序顺序,如果设置了值(整数),则按指定层次进行排序。
None
sortorder
代表你希望对 MultiIndex
的哪一层进行排序。层次从 0 开始,0 代表第一层,1 代表第二层,依此类推。names
:
可选参数。指定每个层次的名称。
MultiIndex
的每个层次设置名称。可以是一个列表,表示多个层次的名称,也可以是标量,表示单个名称。如果不指定,默认不设置名称。MultiIndex
对象,其中的索引基于提供的数组。MultiIndex.from_arrays
常用于需要构建分层索引的数据场景,例如在时间序列数据或分组数据分析时,可以将多个维度的数据转化为一个多层索引,从而便于数据的多维度操作和查询。
下面是一些从简单到复杂的例子,展示如何使用 MultiIndex.from_arrays
方法构建多层索引。
import pandas as pd
# 创建两层索引
arrays = [['a', 'a', 'b', 'b'], [1, 2, 1, 2]]
multi_index = pd.MultiIndex.from_arrays(arrays, names=['letter', 'number'])
# 输出 MultiIndex
f"MultiIndex:\n{multi_index}\n"
输出:
MultiIndex:
MultiIndex([('a', 1),
('a', 2),
('b', 1),
('b', 2)],
names=['letter', 'number'])
将 MultiIndex
应用于 DataFrame 的行索引。
# 创建 DataFrame,并使用 MultiIndex 作为行索引
df = pd.DataFrame({'value': [10, 20, 30, 40]}, index=multi_index)
# 输出 DataFrame
f"DataFrame with MultiIndex:\n{df}\n"
输出:
DataFrame with MultiIndex:
value
letter number
a 1 10
2 20
b 1 30
2 40
你可以使用 sortorder
参数对某一层进行排序,例如按照第一层进行排序。
# 创建 MultiIndex 并按照第一层排序
multi_index_sorted = pd.MultiIndex.from_arrays(arrays, sortorder=0, names=['letter', 'number'])
# 输出排序后的 MultiIndex
f"Sorted MultiIndex:\n{multi_index_sorted}\n"
输出:
Sorted MultiIndex:
MultiIndex([('a', 1),
('a', 2),
('b', 1),
('b', 2)],
names=['letter', 'number'])
MultiIndex.from_arrays
是 pandas
提供的一种非常灵活且便捷的方法,用于通过多个数组构建多层次索引。它的主要用途是在处理具有分层结构的数据时,帮助用户更好地管理和查询复杂的多维数据。
更新时间:Oct. 23, 2024, 8:52 p.m. 标签:pandas python 多层索引