Python Pandas 库中的 stack 和 unstack 函数是什么?
Pandas 库中的 stack 和 unstack 函数用于重塑 DateFrame,以便以不同的方式提取更多信息。
Stack
Pandas stack 用于将层级从列堆叠到索引。它返回一个具有多级索引的新 DataFrame 或 Series。stack 方法有两个参数:level 和 dropna。
level 参数用于将列轴的堆叠到索引轴,默认值为 1,我们可以提供字符串、列表和整数。dropna 用于删除结果 DataFrame/Series 中缺少值的行。默认情况下,它为 True,并且接受布尔值数据。
让我们举个例子,看看它是如何工作的。
示例
df = pd.read_json('E:\iris.json') # 使用鸢尾花数据集创建一个 DataFrame
df_stacked = df.stack(0) # 堆叠到第 0 层
print(df_stacked) # 显示结果
解释
使用鸢尾花数据集,我们创建了一个 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",其结果输出是一个包含 0 和 1 两个级别的 Series,Series 长度为 750。
Unstack
Unstack 方法与 stack 方法类似,它返回一个包含新级别列标签的 DataFrame。它有两个参数,分别是 level 和 fill_value。
level 参数可以接受整数、字符串或这些值的列表,默认值为 1(1 表示最后一级)。如果 unstack 操作产生任何缺失值,则使用 fill_value 函数填充空值。
示例
在本例中,我们将使用上述堆叠的 DataFrame 并将其应用于 unstack 函数。
unstacked_df = df_stacked.unstack(level=0) print(unstacked_df)
解释
对上述示例中的堆叠 DataFrame 进行 unstack 操作。此处,层级为 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]
非堆叠的 DataFrame 具有 0 级,包含 5 行和 150 列。使用这些 stack 和 unstack 函数,我们可以轻松地从 DataFrame 中提取数据,并且可以轻松地重塑多级 DataFrame。

