在重复删除其他列的同时转动Pandas数据帧

时间:2017-01-26 16:35:40

标签: python pandas

documentation example类似,我想转动以下数据框:

  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]})

2 个答案:

答案 0 :(得分:3)

您可以使用pivot_tablepivot只接受一列作为索引,而{ {1}}可以接受多列:

pivot_table

答案 1 :(得分:1)

使用set_indexunstack

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