DataFrame.pivot(self, index=None, columns=None, values=None) → 'DataFrame' [source]
返回按给定索引/列值组织的重新构造的DataFrame
。
根据列值重塑数据(生成一个 "pivot"
表)。使用来自指定索引/列的惟一值来形成结果DataFrame
的轴。此函数不支持数据聚合,多个值将导致列中的多索引。更多关于整形的信息,请参阅User Guide 。
参数: | index : 用于制作新 columns : 位置参数传递给 values : 于填充新frame值的列。如果未指定,将使用所有剩余的列,并且结果将具有按层次结构索引的列。 在版本0.23.0中更改:还接受列名称列表。 |
返回值: |
返回调整后的 |
Raises: | ValueError: 如果有任何 |
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