看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注: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
的排序顺序(按给定层次排序)。
None
MultiIndex
的某一层按升序排序,排序的层次从 0
开始编号。names
:
可选参数。为 MultiIndex
的各层指定名称。
MultiIndex
的层次指定名称。如果是列表,长度应与 df
的列数一致。默认情况下,层次名称未定义。MultiIndex
对象,基于 DataFrame 的列数据生成的多层次索引。MultiIndex.from_frame
适用于当你有一个 DataFrame 并希望将其某些列转化为多层次索引的场景。这在数据处理和分析时,尤其是在处理分层数据时非常有用。
MultiIndex
import 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 的某些列作为索引可以有效地提升数据的组织和查询效率。
更新时间:Oct. 23, 2024, 8:51 p.m. 标签:pandas python 多层索引