熊猫列值到列?
问题描述:
我已经看到了将一个列/系列分成多个Pandas数据框的主题的一些变化,但我一直在尝试做一些事情,而不是真正成功地使用现有的方法。熊猫列值到列?
给出一个数据帧像这样:
key val
id
2 foo oranges
2 bar bananas
2 baz apples
3 foo grapes
3 bar kiwis
我想要的物品转换在key
串联成列,与val
值作为值,就像这样:
foo bar baz
id
2 oranges bananas apples
3 grapes kiwis NaN
我觉得这应该是相对简单的事情,但是随着卷积水平的不断提高,我几个小时都在对付这个问题,并且没有成功。
答
有几种方法:
使用.pivot_table
:
>>> df.pivot_table(values='val', index=df.index, columns='key', aggfunc='first')
key bar baz foo
id
2 bananas apples oranges
3 kiwis NaN grapes
>>> df.pivot(index=df.index, columns='key')['val']
key bar baz foo
id
2 bananas apples oranges
3 kiwis NaN grapes
其次.unstack
:
>>> df.reset_index().groupby(['id', 'key'])['val'].aggregate('first').unstack()
key bar baz foo
id
2 bananas apples oranges
3 kiwis NaN grapes
答
你可以使用和unstack
In [1923]: df.set_index([df.index, 'key'])['val'].unstack()
Out[1923]:
key bar baz foo
id
2 bananas apples oranges
3 kiwis None grapes
或者简化groupby
In [1926]: df.groupby([df.index, 'key'])['val'].first().unstack()
Out[1926]:
key bar baz foo
id
2 bananas apples oranges
3 kiwis None grapes
Wunderbar酒吧!我正沿着第三条路走下去,并且纠缠不清,但我不知道在整个枢轴区有一个这样的隐喻。谢谢! – 2014-10-08 12:03:12