Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。本文主要介绍一下Pandas中pandas.DataFrame.pivot方法的使用。

DataFrame.pivot(self, index=None, columns=None, values=None) → 'DataFrame'       [source]

返回按给定索引/列值组织的重新构造的DataFrame

根据列值重塑数据(生成一个 "pivot" 表)。使用来自指定索引/列的惟一值来形成结果DataFrame的轴。此函数不支持数据聚合,多个值将导致列中的多索引。更多关于整形的信息,请参阅User Guide 。

参数

index :strobject, 可选

用于制作新frame索引的列。如果为None,则使用现有索引。

columns :strobject

位置参数传递给func

values :str, object 或 之前的列表, 可选

于填充新frame值的列。如果未指定,将使用所有剩余的列,并且结果将具有按层次结构索引的列。

在版本0.23.0中更改:还接受列名称列表。

返回值

DataFrame

返回调整后的DataFrame

Raises

ValueError:

如果有任何index,则列组合具有多个值。需要聚合时使用DataFrame.pivot_table

Notes

有关更好的控制,请参阅分层索引文档以及相关的堆栈/非堆栈方法。

例子

>>> 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

如果存在重复项,则会引发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

注意 : 前两行对于我们的index 和column参数是相同的

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