Python 熊猫(键,值)数据,移动键的重复实例';将值放入新列中
我有一个包含“NAME”和“VALUE”列的数据框:Python 熊猫(键,值)数据,移动键的重复实例';将值放入新列中,python,pandas,Python,Pandas,我有一个包含“NAME”和“VALUE”列的数据框: NAME VALUE apple 6 banana 3 cherry 7 apple 2 banana 5 cherry 3 我想将重复实例的值移动到一个新列,如下所示: NAME VALUE VALUE2 apple 6 2 banana 3 5 cherry 7 3 我以前在
NAME VALUE
apple 6
banana 3
cherry 7
apple 2
banana 5
cherry 3
我想将重复实例的值移动到一个新列,如下所示:
NAME VALUE VALUE2
apple 6 2
banana 3 5
cherry 7 3
我以前在Python中通过迭代CSV行来实现这一点,并维护一个到目前为止读取的唯一名称列表,检查列表中是否存在名称……如果是,那么现在是我第二次看到它,因此我将其值添加到新的列VALUE2中。顺便说一句,这些行并不是按任何特定顺序排列的
在Pandas中有没有快速的方法可以做到这一点?我们需要两个
set\u index
调用加上一个unstack
:
df = df.set_index('NAME').set_index(
df.groupby('NAME').cumcount(), append=True
).unstack()
df.columns = df.columns.map('{0[0]}{0[1]}'.format)
使用
pivot
df.assign(key=df.groupby('NAME').cumcount()+1).pivot('NAME','key','VALUE').add_prefix('VALUE_')
Out[397]:
key VALUE_1 VALUE_2
NAME
apple 6 2
banana 3 5
cherry 7 3
我很好奇,你是如何知道如何“连锁”所有这些方法来实现这个结果的。它是基于您对熊猫的体验,还是有一个您不介意分享的综合参考资料?谢谢太棒了@coldspeed之前只回答了一个问题,但他们和温的解决方案都有效。非常感谢。@Anthony我的综合参考资料包含了我几个月来回答的所有问题:-)明白了,我还在学习如何有效地使用熊猫,我会查看你的个人资料。干杯@罗伯特,我建议你提出一个新问题。你能做到吗?
df.assign(key=df.groupby('NAME').cumcount()+1).pivot('NAME','key','VALUE').add_prefix('VALUE_')
Out[397]:
key VALUE_1 VALUE_2
NAME
apple 6 2
banana 3 5
cherry 7 3