Python 从具有相同ID的行创建列

Python 从具有相同ID的行创建列,python,pandas,bigdata,Python,Pandas,Bigdata,我有这样一个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.

我有这样一个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
正如您所看到的,用户名对于相同的id写得不一样。我想将所有用户名重新组合到同一行,如下所示:

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

谢谢

您可以为重复的计数
Id
创建
多索引
,然后可以通过重塑,最后通过以下方式进行一些数据清理:

重命名从
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        

干得好!你现在知道我如何在不删除df的所有其他行的情况下实现这一点吗?@YoavTaieb-S有多个列,如
username
,需要对它们进行与列
username
相同的输出数据处理?是的,但我还想保留df中以前的数据。你看,我还有其他不需要此处理的列,我想保留它们。@YoavTaieb-你能用预期的输出更改有问题的数据吗?@YoavTaieb-所以更改
df.set_索引(['Id',df.groupby('Id').cumcount()])['username']
df.set_索引(['Id','age',df groupby('Id').cumcount())['username']
,但与数据示例中的一样,每行需要相同的值。