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


Python pandas.DataFrame.pivot用法及代碼示例

用法:

DataFrame.pivot(index=None, columns=None, values=None)

返回由給定索引/列值組織的重塑 DataFrame。

根據列值重塑數據(生成“pivot” 表)。使用指定 index /columns 中的唯一值來形成結果 DataFrame 的軸。此函數不支持數據聚合,多個值將導致列中的 MultiIndex。有關重塑的更多信息,請參閱用戶指南。

參數

indexstr 或 object 或 str 列表,可選

用於製作新框架索引的列。如果沒有,則使用現有索引。

columnsstr 或對象或 str 列表

用於製作新框架的列的列。

valuesstr,對象或前一個列表,可選

用於填充新框架值的列。如果未指定,將使用所有剩餘的列,並且結果將具有分層索引的列。

返回

DataFrame

返回重構的 DataFrame。

拋出

ValueError:

當存在任何具有多個值的 indexcolumns 組合時。 DataFrame.pivot_table 當你需要聚合時。

注意

有關更精細的控製,請參閱分層索引文檔以及相關的堆棧/取消堆棧方法。

有關更多示例,請參閱用戶指南。

例子

>>> df = pd.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']})
>>> 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')
bar  A   B   C
foo
one  1   2   3
two  4   5   6
>>> df.pivot(index='foo', columns='bar')['baz']
bar  A   B   C
foo
one  1   2   3
two  4   5   6
>>> df.pivot(index='foo', columns='bar', values=['baz', 'zoo'])
      baz       zoo
bar   A  B  C   A  B  C
foo
one   1  2  3   x  y  z
two   4  5  6   q  w  t

您還可以分配列名列表或索引名稱列表。

>>> df = pd.DataFrame({
...        "lev1":[1, 1, 1, 2, 2, 2],
...        "lev2":[1, 1, 2, 1, 1, 2],
...        "lev3":[1, 2, 1, 2, 1, 2],
...        "lev4":[1, 2, 3, 4, 5, 6],
...        "values":[0, 1, 2, 3, 4, 5]})
>>> df
    lev1 lev2 lev3 lev4 values
0   1    1    1    1    0
1   1    1    2    2    1
2   1    2    1    3    2
3   2    1    2    4    3
4   2    1    1    5    4
5   2    2    2    6    5
>>> df.pivot(index="lev1", columns=["lev2", "lev3"],values="values")
lev2    1         2
lev3    1    2    1    2
lev1
1     0.0  1.0  2.0  NaN
2     4.0  3.0  NaN  5.0
>>> df.pivot(index=["lev1", "lev2"], columns=["lev3"],values="values")
      lev3    1    2
lev1  lev2
   1     1  0.0  1.0
         2  2.0  NaN
   2     1  4.0  3.0
         2  NaN  5.0

如果有任何重複,則會引發 ValueError。

>>> df = pd.DataFrame({"foo":['one', 'one', 'two', 'two'],
...                    "bar":['A', 'A', 'B', 'C'],
...                    "baz":[1, 2, 3, 4]})
>>> df
   foo bar  baz
0  one   A    1
1  one   A    2
2  two   B    3
3  two   C    4

請注意,我們的indexcolumns 參數的前兩行是相同的。

>>> df.pivot(index='foo', columns='bar', values='baz')
Traceback (most recent call last):
   ...
ValueError:Index contains duplicate entries, cannot reshape

相關用法


注:本文由純淨天空篩選整理自pandas.pydata.org大神的英文原創作品 pandas.DataFrame.pivot。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。