python - 从具有相同 ID 的行创建列
问题描述
我有一个这样的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
谢谢。
解决方案
您可以MultiIndex
为 count 重复创建,然后可能 reshape by Id
,最后通过with 进行一些数据清理: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