当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python pyspark DataFrame.stack用法及代码示例


本文简要介绍 pyspark.pandas.DataFrame.stack 的用法。

用法:

DataFrame.stack() → Union[DataFrame, Series]

将列中的规定级别堆叠到索引。

返回一个重塑的 DataFrame 或具有 multi-level 索引的系列,与当前 DataFrame 相比,具有一个或多个新的最内部级别。新的最内层是通过旋转当前数据帧的列来创建的:

  • 如果列有一个级别,则输出是一个系列;

  • 如果列有多个级别,则新的索引级别是从规定的级别获取的,并且输出是一个 DataFrame。

新的索引级别已排序。

返回

DataFrame 或系列

堆叠的 DataFrame 或系列。

注意

该函数的命名类似于将书籍集合从水平位置并排( DataFrame 的列)重新组织到彼此垂直堆叠(在 DataFrame 的索引中)。

例子

单层柱

>>> df_single_level_cols = ps.DataFrame([[0, 1], [2, 3]],
...                                     index=['cat', 'dog'],
...                                     columns=['weight', 'height'])

用单层列轴堆叠 DataFrame 会返回一个系列:

>>> df_single_level_cols
     weight  height
cat       0       1
dog       2       3
>>> df_single_level_cols.stack().sort_index()
cat  height    1
     weight    0
dog  height    3
     weight    2
dtype: int64

多级列:简单案例

>>> multicol1 = pd.MultiIndex.from_tuples([('weight', 'kg'),
...                                        ('weight', 'pounds')])
>>> df_multi_level_cols1 = ps.DataFrame([[1, 2], [2, 4]],
...                                     index=['cat', 'dog'],
...                                     columns=multicol1)

使用 multi-level 列轴堆叠 DataFrame :

>>> df_multi_level_cols1  
    weight
        kg pounds
cat      1      2
dog      2      4
>>> df_multi_level_cols1.stack().sort_index()
            weight
cat kg           1
    pounds       2
dog kg           2
    pounds       4

缺失值

>>> multicol2 = pd.MultiIndex.from_tuples([('weight', 'kg'),
...                                        ('height', 'm')])
>>> df_multi_level_cols2 = ps.DataFrame([[1.0, 2.0], [3.0, 4.0]],
...                                     index=['cat', 'dog'],
...                                     columns=multicol2)

在使用multi-level 列堆叠数据帧时,通常会出现缺失值,因为堆叠的数据帧通常比原始数据帧具有更多的值。缺失值用 NaN 填充:

>>> df_multi_level_cols2
    weight height
        kg      m
cat    1.0    2.0
dog    3.0    4.0
>>> df_multi_level_cols2.stack().sort_index()  
        height  weight
cat kg     NaN     1.0
    m      2.0     NaN
dog kg     NaN     3.0
    m      4.0     NaN

相关用法


注:本文由纯净天空筛选整理自spark.apache.org大神的英文原创作品 pyspark.pandas.DataFrame.stack。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。