Вы можете создать MultiIndex
для дублированного подсчета Id
на cumcount
, а затем возможно изменить его на unstack
, затем очистить некоторые данные с помощью add_prefix
с reset_index
:
df1 = (df.set_index(['Id', df.groupby('Id').cumcount()])['username']
.unstack(fill_value='')
.add_prefix('username_')
.reset_index())
print (df1)
Id username_0 username_1
0 1.0 michael Mikael
1 6.0 Mike Mick
2 7.0 Stephanie
Или rename
столбцы для начала с 1
:
df1 = (df.set_index(['Id', df.groupby('Id').cumcount()])['username']
.unstack(fill_value='')
.rename(columns = lambda x: f'username_{x+1}')
.reset_index())
print (df1)
Id username_1 username_2
0 1.0 michael Mikael
1 6.0 Mike Mick
2 7.0 Stephanie