看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
pandas.MultiIndex.from_frame 是一个类方法,用于通过 DataFrame 创建 MultiIndex。这个方法可以从 DataFrame 的列中提取索引信息,形成多层次索引结构。它适用于在需要将 DataFrame 的列转化为多层索引时的场景。
classmethod MultiIndex.from_frame(
df,
sortorder=None,
names=None
)
df:
必须传递的参数。一个包含多个列的 DataFrame,所选列将用于创建 MultiIndex。
MultiIndex 的一个层次。所有列的数据类型和长度应一致。sortorder:
可选参数。指定 MultiIndex 的排序顺序(按给定层次排序)。
NoneMultiIndex 的某一层按升序排序,排序的层次从 0 开始编号。names:
可选参数。为 MultiIndex 的各层指定名称。
MultiIndex 的层次指定名称。如果是列表,长度应与 df 的列数一致。默认情况下,层次名称未定义。MultiIndex 对象,基于 DataFrame 的列数据生成的多层次索引。MultiIndex.from_frame 适用于当你有一个 DataFrame 并希望将其某些列转化为多层次索引的场景。这在数据处理和分析时,尤其是在处理分层数据时非常有用。
MultiIndeximport pandas as pd
# 创建一个 DataFrame
data = {
'letter': ['a', 'a', 'b', 'b'],
'number': [1, 2, 1, 2],
'value': [10, 20, 30, 40]
}
df = pd.DataFrame(data)
# 使用 from_frame 创建 MultiIndex
multi_index = pd.MultiIndex.from_frame(df[['letter', 'number']], names=['letter', 'number'])
# 输出 MultiIndex
f"MultiIndex:\n{multi_index}\n"
输出:
MultiIndex:
MultiIndex([('a', 1),
('a', 2),
('b', 1),
('b', 2)],
names=['letter', 'number'])
# 创建 DataFrame,并使用 MultiIndex 作为行索引
df_multi = pd.DataFrame({'value': [10, 20, 30, 40]}, index=multi_index)
# 输出 DataFrame
f"DataFrame with MultiIndex:\n{df_multi}\n"
输出:
DataFrame with MultiIndex:
value
letter number
a 1 10
2 20
b 1 30
2 40
你可以通过 sortorder 参数对特定层进行排序。例如,按第一层进行排序:
# 使用 sortorder 对第一层排序
multi_index_sorted = pd.MultiIndex.from_frame(df[['letter', 'number']], 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'])
pandas.MultiIndex.from_frame 方法通过 DataFrame 的列创建多层次索引,非常适合处理分层数据。在数据分析过程中,将 DataFrame 的某些列作为索引可以有效地提升数据的组织和查询效率。
更新时间:2024-10-23 20:51:47 标签:pandas python 多层索引