在 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 列转换回单级列,而不会出现错误并且很容易而不会混淆。
转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处
本文地址:
相关文章
pandas dataframe dataframe.shift() 函数
发布时间:2024/04/24 浏览次数:133 分类:python
-
dataframe.shift() 函数是将 dataframe 的索引按指定的周期数进行移位。
python pandas.pivot_table() 函数
发布时间:2024/04/24 浏览次数:82 分类:python
-
python pandas pivot_table()函数通过对数据进行汇总,避免了数据的重复。
pandas read_csv()函数
发布时间:2024/04/24 浏览次数:254 分类:python
-
pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 dataframe 中。
pandas 多列合并
发布时间:2024/04/24 浏览次数:628 分类:python
-
本教程介绍了如何在 pandas 中使用 dataframe.merge()方法合并两个 dataframes。
pandas loc vs iloc
发布时间:2024/04/24 浏览次数:837 分类:python
-
本教程介绍了如何使用 python 中的 loc 和 iloc 从 pandas dataframe 中过滤数据。
在 python 中将 pandas 系列的日期时间转换为字符串
发布时间:2024/04/24 浏览次数:894 分类:python
-
了解如何在 python 中将 pandas 系列日期时间转换为字符串