我有一个包含'NAME'和'VALUE'列的数据框:
NAME VALUE
apple 6
banana 3
cherry 7
apple 2
banana 5
cherry 3
我想将重复实例的VALUE移动到新列:
NAME VALUE VALUE2
apple 6 2
banana 3 5
cherry 7 3
我之前在Python中通过迭代CSV行并保持一个唯一的NAME读取列表到目前为止完成了这一点,检查列表中是否存在NAME ......如果是,那么它现在是第二次我'我看到它所以我将其VALUE添加到新列VALUE2。顺便说一句,这些行不会被假定为任何特定的顺序。
在Pandas中有这么快的方法吗?
答案 0 :(得分:5)
我们需要两个set_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)
df
VALUE0 VALUE1
NAME
apple 6 2
banana 3 5
cherry 7 3
答案 1 :(得分:5)
使用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