I have this dataframe:

```
   ID  key
0   1    A
1   1    B
2   2    C
3   3    D
4   3    E
5   3    E

```

I want to create additional `key` columns -as necessary- to store the data in the `key` column when there are duplicate `IDs`

This is a snippet of the output:

```
   ID  key  key2  
0   1    A     B # Note: ID#1 appeared twice in the dataframe, so the key value "B"
                 # associated with the duplicate ID will be stored in the new column "key2"

```

The complete output should like the following: 

```
    ID  key  key2   key3
0   1    A      B    NaN
1   2    C    NaN    NaN
2   3    D      E      E # The ID#3 has repeated three times.  The key of                    
                         # of the second repeat "E" will be stored under the "key2" column
                         # and the third repeat "E" will be stored in the new column "key3"  

```

Any suggestion or idea how should I approach this problem?

Thanks,