Python 从具有相同ID的行创建列
我有这样一个df: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.
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']
,但与数据示例中的一样,每行需要相同的值。