有没有一种简单的方法可以通过逐个组匹配值?我的意思是:
例如,我有这个df:
Id Rank Name
111 7 x
111 5 y
111 1 z
222 1 x
333 5 a
333 1 b
444 1 c
我想在我的df中添加一个列:(按ID分组,根据其等级匹配名称)
Id Rank Name New Col
111 7 x x
111 5 y y-x
111 1 z z-x
222 1 x x
333 5 a a
333 1 b b-a
444 1 c c
答案 0 :(得分:1)
我会使用groupby
+ first
执行此操作,然后使用np.where
来决定应用更改的位置。
i = df.groupby('Id').Name.transform('first')
df['New Col'] = np.where(np.equal(df.Name, i), df.Name, df.Name + '-' + i)
df
Id Rank Name New Col
0 111 7 x x
1 111 5 y y-x
2 111 1 z z-x
3 222 1 x x
4 333 5 a a
5 333 1 b b-a
6 444 1 c c