当你在处理包含某种序列(例如时间序列数据)的变量的数据集时,数据通常需要进行重塑。
Pandas 提供了各种用于重塑 DataFrame 的内置方法。其中,stack() 和 unstack() 是最流行的 2 种重组列和行的方法:
stack():从列到行堆叠
unstack():从行到列取消堆叠
stack() 和 unstack() 似乎使用起来相当简单,但你仍然应该知道一些技巧来加快数据分析。
在本文中,我将分享 Pandas 的几个技巧:
单层
多层次:简单案例
多层次:缺失值
多个级别:指定要堆叠的级别
多个级别:删除缺失值
unstack: 简单案例
unstack:更多用法
1.单层
最简单的 stack()可以应用于具有单层列的 DataFrame。它只是将标签从列堆叠到行并输出一个系列。
df_single_level = pd.DataFrame(
[['Mostly cloudy', 10], ['Sunny', 12]],
index=['London', 'Oxford'],
columns=['Weather', 'Wind']
)
df_single_level.stack()
2.多层次:简单案例
通常,我们会在具有多级列的 DataFrame 上使用 stack()。
让我们创建一个 DataFrame。有多种方法可以创建具有多级列的 DataFrame,最简单的方法之一是创建 MultiIndex 对象 MultiIndex.from_tuples() 并将结果传递给 pd.DataFrame() 中的 columns 参数:
multi_col_1 = pd.MultiIndex.from_tuples(
[('Wind', 'mph'), ('Wind', 'm/s')]
)
df_multi_level_1 = pd.DataFrame(
[[13, 5.5], [19, 8.5]],
index=['London', 'Oxford'],
columns=multi_col_1
)
通过调用 stack(),它将获取列级别(mph, m/s) 并将其堆叠到行轴上。
df_multi_level_1