當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。