Python Pandas 库中的 stack 和 unstack 函数是什么。


Stack 和 unstack 函数用于重塑 pandas 库中的 DataFrame,以通过不同方式提取更多信息。

Stack

Pandas stack 用于将列级别堆叠到索引中。它返回一个具有多级索引的新 DataFrame 或 Series。stack 方法有两个参数:level 和 dropna。

level 参数用于将列轴堆叠到索引轴上,默认值为 1,我们可以提供字符串、列表和整数。dropna 用于删除结果 DataFrame/Series 中具有缺失值的行。默认值为 True,它接受布尔数据。

让我们举个例子,看看它是如何工作的。

示例

df = pd.read_json('E:\iris.json') # create a DataFrame using iris data set
df_stacked = df.stack(0) # stacked to level 0
print(df_stacked) # display the result

解释

使用 iris 数据集,我们创建了一个 DataFrame,它只有一个级别 0。在下一步中,将该 DataFrame df 堆叠到索引级别。

输出

0   sepalLength          5.1
    sepalWidth           3.5
    petalLength          1.4
    petalWidth           0.2
    species           setosa
...
149   sepalLength        5.9
      sepalWidth           3
      petalLength        5.1
      petalWidth         1.8
      species      virginica
Length: 750, dtype: object

上面输出块显示了堆叠的 DataFrame “df”,结果输出是一个具有 2 个级别(0 和 1)的 Series,Series 长度为 750。

Unstack

Unstack 也类似于 stack 方法,它返回一个 DataFrame,该 DataFrame 具有新的列标签级别。它有两个参数:level 和 fill_value。

level 参数接受整数、字符串或这些的列表,默认值为 1(1 是最后一个级别)。fill_value 用于填充空值,如果 unstack 产生任何缺失值。

示例

在此示例中,我们将采用上述堆叠的 DataFrame 并将其应用于 unstack 函数。

unstacked_df = df_stacked.unstack(level=0)
print(unstacked_df)

解释

将上述示例中的堆叠 DataFrame 取消堆叠。此处级别为 0。结果输出 DataFrame 显示在下面的块中。

输出

              0         1         2        3          4        5         6         7     \
sepalLength    5.1       4.9       4.7       4.6         5       5.4       4.6         5
sepalWidth     3.5         3       3.2       3.1       3.6       3.9       3.4       3.4
petalLength    1.4       1.4       1.3       1.5       1.4       1.7       1.4       1.5
petalWidth     0.2       0.2       0.2       0.2       0.2       0.4       0.3       0.2
species     setosa    setosa    setosa    setosa    setosa    setosa    setosa    setosa

               8           9  ...        140          141          142          143 \
sepalLength    4.4       4.9  ...        6.7          6.9          5.8          6.8
sepalWidth     2.9       3.1  ...        3.1          3.1          2.7          3.2
petalLength    1.4       1.5  ...        5.6          5.1          5.1          5.9
petalWidth     0.2       0.1  ...        2.4          2.3          1.9          2.3
species     setosa    setosa  ...  virginica    virginica    virginica    virginica

                 144          145          146          147          148          149
sepalLength      6.7          6.7          6.3          6.5          6.2          5.9
sepalWidth       3.3            3          2.5            3          3.4            3
petalLength      5.7          5.2            5          5.2          5.4          5.1
petalWidth       2.5          2.3          1.9            2          2.3          1.8
species    virginica    virginica    virginica    virginica    virginica    virginica

[5 rows x 150 columns]

级别为 0 的取消堆叠的 DataFrame 具有 5 行和 150 列。使用这些 stack 和 unstack 函数,我们可以轻松地从 DataFrame 中提取数据,并且可以轻松地重塑多级 DataFrame。

更新于: 2021年11月18日

1K+ 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.