Создать столбцы из строки с одинаковым идентификатором - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть df, подобный этому:

Id      username  age

1       michael.     34
6.      Mike.          65
7.      Stephanie.  14
1.      Mikael.        34
6.      Mick.           65

Как видите, имя пользователя не пишется одинаково для одного и того же идентификатора.Я хотел бы перегруппировать все имена пользователей в одну строку следующим образом:

Id      username      username_2    Age

1       michael.         mikael.           34
6.      Mike.             Mick.              65
7.      Stephanie.                           14

Спасибо.

1 Ответ

0 голосов
/ 21 февраля 2019

Вы можете создать 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        
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...