迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

在 Pandas 中从多索引恢复为单索引

作者:迹忆客 最近更新:2024/04/24 浏览次数:

本教程教授如何使用 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 列转换回单级列,而不会出现错误并且很容易而不会混淆。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Pandas read_csv()函数

发布时间:2024/04/24 浏览次数:181 分类:Python

Pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 DataFrame 中。

Pandas 追加数据到 CSV 中

发布时间:2024/04/24 浏览次数:70 分类:Python

本教程演示了如何在追加模式下使用 to_csv()向现有的 CSV 文件添加数据。

Pandas 多列合并

发布时间:2024/04/24 浏览次数:190 分类:Python

本教程介绍了如何在 Pandas 中使用 DataFrame.merge()方法合并两个 DataFrames。

Pandas loc vs iloc

发布时间:2024/04/24 浏览次数:140 分类:Python

本教程介绍了如何使用 Python 中的 loc 和 iloc 从 Pandas DataFrame 中过滤数据。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便