从具有相同ID的行创建列

2024-09-29 23:27:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个df:

Id      username  age

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

如您所见,用户名不是为同一个id写的。我想将所有用户名重新组合到同一行,如下所示:

Id      username      username_2    Age

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

谢谢。你知道吗


Tags: iddfageusername用户名mikemichaelstephanie
1条回答
网友
1楼 · 发布于 2024-09-29 23:27:09

您可以通过^{}为count duplicated Id创建MultiIndex,然后可以通过^{}重塑,最后通过^{}^{}进行一些数据清理:

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           

或从1开始的rename列:

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        

相关问题 更多 >

    热门问题