pandas.pivot()
具体使用看实例
首先建立一个数据框数据
import pandas as pd
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']})在这里插入代码片
输出结果:
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
df1=df.pivot(index='foo',columns='bar',values='baz') ##类似形成交叉列表
print(df1)
#输出结果
bar A B C
foo
one 1 2 3
two 4 5 6
df2=df.pivot(index='foo',columns='bar')['baz']
print(df2)
#输出结果实际上和df1输出的结果是一致的
bar A B C
foo
one 1 2 3
two 4 5 6
df3=df.pivot(index='foo', columns='bar', values=['baz', 'zoo'])
print(df3)
##输出结果,多加了一个字段的数值的输出
baz zoo
bar A B C A B C
foo
one 1 2 3 x y z
two 4 5 6 q w t
稍微复杂点的情况,重新建立一个数据框数据
cf = 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]})
print(cf)
#输出结果
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
cf1=cf.pivot(index='lev1',columns=['lev2','lev3'],values='values')
print(cf1)
#输出结果
```python
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
注意这种情况,不满足一一对应输出结果错误
```python
ef = pd.DataFrame({"foo": ['one', 'one', 'two', 'two'],
"bar": ['A', 'A', 'B', 'C'],
"baz": [1, 2, 3, 4]})
print(ef)
ef1=ef.pivot(index='foo',columns='bar',values='baz')
print(ef1)
#输出结果
ValueError: Index contains duplicate entries, cannot reshape