首页 > 解决方案 > 在一列中查找重复项,比较另一列,修改 DataFrame 中的第三列

问题描述

我不会以与用例无关的方式解释这一点,而是提供列名,因为这样更清楚。

我有三列:PlayerName、Salary、Position。

一个例子:

PlayerName, Salary, Position
Joe, 3000, FWD
Joe, 4500, FWD
Bill, 3200, CNT
Bill, 2000, CNT
Jill, 1200, GRD
Jill, 2200, GRD

我需要找到名称相同的地方,然后将薪水较高的行的职位重命名为CPT([原始职位值])

我最坚持的事情是如何进行相同的列比较,不仅是为了找到重复项(比如使用 np.isin),而且还要进行比较。

在此示例中,输出将是:

Joe, 3000, FWD
Joe, 4500, CPT (FWD)
Bill, 3200, CPT (CNT)
Bill, 2000, CNT
Jill, 1200, GRD
Jill, 2200, CPT (GRD)

标签: pythonpandas

解决方案


你说总是有2个重复的条目,所以你可以简单地使用idxmax+ loc

m = df.groupby('PlayerName')['Salary'].idxmax()
df.loc[m, 'Position'] = 'CPT' + df.loc[m, 'Position'].map(' ({})'.format)

  PlayerName  Salary   Position
0        Joe    3000        FWD
1        Joe    4500  CPT (FWD)
2       Bill    3200  CPT (CNT)
3       Bill    2000        CNT
4       Jill    1200        GRD
5       Jill    2200  CPT (GRD)

推荐阅读