这里写自定义目录标题
pandas.core.frame.DataFrame的pivot方法
pivot(index=None, columns=None, values=None) method of pandas.core.frame.DataFrame instance
返回给定行/列值的新的DataFrame对象
根据列值重塑数据(生成“数据透视表”)。 使用指定index
/columns
中的唯一值来形成结果DataFrame的轴。 此函数不支持数据聚合,多个值将导致列中的MultiIndex。
Parameters
----------
index : string or object, optional
用于生成新表索引的列。如果为None,则默认使用现有索引。
columns : string or object
用于生成新表列名的列。
values : string, object or a list of the previous, optional
用于填充新表值的列。如果未指定,那么所有剩余列都将被使用,结果将具有分层索引。
Returns
-------
DataFrame
返回重组的DataFrame
Raises
------
ValueError:
当index
、columns
有多个值时出现。如果需要聚合,则应该使用DataFrame.pivot_table
方法。
See Also
--------
DataFrame.pivot_table : 处理一个index/column对应多个值的情况
duplicate values for one index/column pair.
DataFrame.unstack : 基于值而不是列进行透视
Examples
--------
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
新表格中,index来自原来表格的foo列的值(one,two),columns来自原来表格中bar列的值(A,B,C), values为原来baz列的值
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
这里为values指定了一个列表,则返回的是一个分层索引
A ValueError is raised if there are any duplicates.
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和columns对对应了多个不同的值。
df.pivot(index='foo', columns='bar', values='baz')
Traceback (most recent call last):
...
ValueError: Index contains duplicate entries, cannot reshape