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


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


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

用法:

DataFrame.pivot(index: Union[Any, Tuple[Any, …], None] = None, columns: Union[Any, Tuple[Any, …], None] = None, values: Union[Any, Tuple[Any, …], None] = None) → pyspark.pandas.frame.DataFrame

返回按给定索引/列值组织的重塑DataFrame。

根据列值重塑数据(生成“pivot” 表)。使用指定 index /columns 中的唯一值来形成结果 DataFrame 的轴。该函数不支持数据聚合。

参数

index字符串,可选

用于制作新框架索引的列。如果没有,则使用现有索引。

columnsstring

用于制作新框架的列的列。

values字符串、对象或前一个列表

用于填充新框架值的列。

返回

DataFrame

返回重构的 DataFrame。

例子

>>> df = ps.DataFrame({'foo': ['one', 'one', 'one', 'two', 'two',
...                            'two'],
...                    'bar': ['A', 'B', 'C', 'A', 'B', 'C'],
...                    'baz': [1, 2, 3, 4, 5, 6],
...                    'zoo': ['x', 'y', 'z', 'q', 'w', 't']},
...                   columns=['foo', 'bar', 'baz', 'zoo'])
>>> df
   foo bar  baz zoo
0  one   A    1   x
1  one   B    2   y
2  one   C    3   z
3  two   A    4   q
4  two   B    5   w
5  two   C    6   t
>>> df.pivot(index='foo', columns='bar', values='baz').sort_index()
... 
bar  A  B  C
foo
one  1  2  3
two  4  5  6
>>> df.pivot(columns='bar', values='baz').sort_index()  
bar  A    B    C
0  1.0  NaN  NaN
1  NaN  2.0  NaN
2  NaN  NaN  3.0
3  4.0  NaN  NaN
4  NaN  5.0  NaN
5  NaN  NaN  6.0

请注意,与 pandas 在发现重复值时引发 ValueError 不同,pandas-on-Spark 的数据透视表仍然以其在操作期间遇到的第一个值工作,因为数据透视表是一项昂贵的操作,并且在处理时首选允许执行而不是快速失败大数据。

>>> df = ps.DataFrame({"foo": ['one', 'one', 'two', 'two'],
...                    "bar": ['A', 'A', 'B', 'C'],
...                    "baz": [1, 2, 3, 4]}, columns=['foo', 'bar', 'baz'])
>>> df
   foo bar  baz
0  one   A    1
1  one   A    2
2  two   B    3
3  two   C    4
>>> df.pivot(index='foo', columns='bar', values='baz').sort_index()
... 
bar    A    B    C
foo
one  1.0  NaN  NaN
two  NaN  3.0  4.0

它还支持多索引和多索引列。 >>> df.columns = pd.MultiIndex.from_tuples([(‘a’, ‘foo’), (‘a’, ‘bar’), (‘b’, ‘baz’)])

>>> df = df.set_index(('a', 'bar'), append=True)
>>> df  
              a   b
            foo baz
  (a, bar)
0 A         one   1
1 A         one   2
2 B         two   3
3 C         two   4
>>> df.pivot(columns=('a', 'foo'), values=('b', 'baz')).sort_index()
... 
('a', 'foo')  one  two
  (a, bar)
0 A           1.0  NaN
1 A           2.0  NaN
2 B           NaN  3.0
3 C           NaN  4.0

相关用法


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