在 Pandas 中从多索引恢复为单索引
本教程教授如何使用 Python 在 Pandas 中从 MultiIndex 恢复为单个索引 DataFrame。
MultiIndex
DataFrame,也称为多级和分层 DataFrame,允许用户拥有多个列,这些列可以标识一行,同时每个列索引通过表中不同的父子关系相互关联。
我们可以使用两种方法将多级索引转换为单级索引。我们将学习在 Pandas 中操作 DataFrame 的灵活性和更高的效率。
将列重命名为标准列以将 MultiIndex 转换为 Pandas 中的单个索引
我们必须首先在此方法中创建一个由 MultiIndex 列组成的 DataFrame。之后,我们可以更改列的名称,即标准列,这样我们就可以轻松地摆脱 MultiIndex 并且没有任何错误。
下面是从一开始就遵循此方法的整个过程的代码。
import pandas as pd
import numpy as np
# build an example DataFrame
midx = pd.MultiIndex(
levels=[["zero", "one"], ["x", "y"]],
codes=[
[
1,
1,
0,
],
[
1,
0,
1,
],
],
)
df = pd.DataFrame(np.random.randn(2, 3), columns=midx)
print(df)
该代码将为我们提供以下输出。
one zero
y x y
0 0.785806 -0.679039 0.513451
1 -0.337862 -0.350690 -1.423253
因此,我们可以观察到,已经创建了一个具有多级索引列的 DataFrame。要将此列恢复为单级索引,我们需要在下面的方法中重命名它们。
df.columns = ["A", "B", "C"]
print(df)
上述代码的输出如下。
A B C
0 0.785806 -0.679039 0.513451
1 -0.337862 -0.350690 -1.423253
分层索引已被删除,仅显示新名称,替换列的旧名称。
在 Pandas 中重置列的级别以将 MultiIndex 转换为单个索引
在这种方法中,我们只需重置 MultiIndex 列的级别以将它们转换为单级列。
reset_index()
方法允许用户重置 DataFrame 的索引并再次考虑默认索引。可以使用此方法同时删除一个或多个级别。
我们将通过在之前使用的代码片段中添加一行来做到这一点。让我们考虑一个不同的例子,以更清晰、更灵活地学习该技术。
index = pd.MultiIndex.from_tuples(
[("bird", "falcon"), ("bird", "parrot"), ("mammal", "lion"), ("mammal", "monkey")],
names=["class", "name"],
)
columns = pd.MultiIndex.from_tuples([("speed", "max"), ("species", "type")])
df = pd.DataFrame(
[(389.0, "fly"), (24.0, "fly"), (80.5, "run"), (np.nan, "jump")],
index=index,
columns=columns,
)
print(df)
上面的代码将为我们提供以下输出。
speed species
max type
class name
bird falcon 389.0 fly
parrot 24.0 fly
mammal lion 80.5 run
monkey NaN jump
我们将使用 reset_index()
方法获得以下输出。
print(df.reset_index(level="class"))
class speed species
max type
name
falcon bird 389.0 fly
parrot bird 24.0 fly
lion mammal 80.5 run
monkey mammal NaN jump
reset_index()
方法将重置列的索引,通过这些索引,层次级别被稀释并转换为单级列 DataFrame。上述代码的输出如下所示。
因此,在本教程中,我们学习了如何将 MultiIndex 列转换回单级列,而不会出现错误并且很容易而不会混淆。
相关文章
Pandas DataFrame DataFrame.shift() 函数
发布时间:2024/04/24 浏览次数:114 分类:Python
-
DataFrame.shift() 函数是将 DataFrame 的索引按指定的周期数进行移位。
Python pandas.pivot_table() 函数
发布时间:2024/04/24 浏览次数:55 分类:Python
-
Python Pandas pivot_table()函数通过对数据进行汇总,避免了数据的重复。
Pandas read_csv()函数
发布时间:2024/04/24 浏览次数:181 分类:Python
-
Pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 DataFrame 中。
Pandas 多列合并
发布时间:2024/04/24 浏览次数:190 分类:Python
-
本教程介绍了如何在 Pandas 中使用 DataFrame.merge()方法合并两个 DataFrames。
Pandas loc vs iloc
发布时间:2024/04/24 浏览次数:140 分类:Python
-
本教程介绍了如何使用 Python 中的 loc 和 iloc 从 Pandas DataFrame 中过滤数据。
在 Python 中将 Pandas 系列的日期时间转换为字符串
发布时间:2024/04/24 浏览次数:51 分类:Python
-
了解如何在 Python 中将 Pandas 系列日期时间转换为字符串