python - 在一列中查找重复项,比较另一列,修改 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)
解决方案
你说总是有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)
推荐阅读
- javascript - 如何使用 Javascript 将 base64 字符串转换为图像
- java - StateMachinePersister 没有使用 StateMachineContext,extendedState 的变量丢失
- php - Google Script 不与 PHP API 交互
- java - 使用cmd编译时没有检测到外部jar文件。?
- angular - 为什么垫排序和分页器不起作用?
- ruby-on-rails - Rails ActiveRecord sanitize_sql 替换 ? 在字符串中
- google-cloud-platform - 谷歌 gcr 图像在哪里存储在谷歌存储中?
- c# - 加入未按预期工作(实体框架)
- php - 使用 php 和 ajax 从数据库中获取数据并显示到文本框
- php - MySQL vs Firebird:使用 PDO 访问 PHP 中的查询列