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