Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在重复数据消除其他列时旋转数据帧_Python_Pandas - Fatal编程技术网

Python 在重复数据消除其他列时旋转数据帧

Python 在重复数据消除其他列时旋转数据帧,python,pandas,Python,Pandas,与类似,我希望透视以下数据帧: foo extra bar baz 0 one x A 1 1 one x B 2 2 one x C 3 3 two y A 4 4 two y B 5 5 two y C 6 结果应该是 extra A B C one x 1 2 3 two y 4 5 6 这可以用比这更短的方式完成吗 在旋转前拆

与类似,我希望透视以下数据帧:

  foo extra bar  baz
0 one     x   A    1
1 one     x   B    2
2 one     x   C    3
3 two     y   A    4
4 two     y   B    5
5 two     y   C    6
结果应该是

     extra A  B  C

one      x 1  2  3
two      y 4  5  6
这可以用比这更短的方式完成吗

  • 在旋转前拆分多余的列
  • 分别对其进行重复数据消除
  • 是否将其合并回数据透视
(我希望pivot命令能够做到这一点,但我的尝试失败了。)

以下是数据帧使用的代码:

df = pd.DataFrame({'foo': ['one','one','one','two','two','two'],
                   'extra': ['x','x','x','y','y','y'],
                   'bar': ['A', 'B', 'C', 'A', 'B', 'C'],
                   'baz': [1, 2, 3, 4, 5, 6]})

您可以使用
pivot\u table
pivot
只接受一列作为索引、列和值,而
pivot\u table
可以接受多列:

df.pivot_table('baz', ['foo', 'extra'], 'bar').reset_index()

#bar    foo extra   A   B   C
#  0    one     x   1   2   3
#  1    two     y   4   5   6

使用
设置索引
取消堆栈

In [2087]: df.set_index(['foo', 'extra', 'bar'])['baz'].unstack().reset_index()
Out[2087]:
bar  foo extra  A  B  C
0    one     x  1  2  3
1    two     y  4  5  6

注意,对于重复的foo/bar对,这有不同的行为:它聚合baz值,而不是给出错误。很好!要达到所需的结果,必须添加最终的
.set\u索引('foo')
。如果存在重复的foo/bar对,这将保留
pivot
命令的错误。