Pandas(键,值)数据,将键值的重复实例移动到新列中

时间:2018-06-04 02:24:54

标签: python pandas

我有一个包含'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中有这么快的方法吗?

2 个答案:

答案 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