python - 如何删除概念上的重复项?
问题描述
我必须处理与此类似的数据集:
Player CurrentTeam PreviousTeam
0 James Team A Null
1 David Team B Null
2 George Team C Null
3 James Team B Team A
4 James Team C Team B
... ...
在上面的例子中,詹姆斯实际上是同一个球员,在数据集中出现了 3 次。没有身份证之类的东西。
这里发生的事情是,詹姆斯实际上是在为 C 队效力。在 C 队之前,他在 B 队,甚至在他加入 A 队(他的职业生涯开始的地方)之前。
但是,我只需要知道他现在的真实球队(即Team C)。
我可以摆脱詹姆斯过去球队的所有其他事件吗?
解决方案
基于此答案中的技术,我们可以摆脱作为 (player, previousteam) 组合存在的任何 (player, current_team) 组合。
>>> df
Player CurrentTeam PreviousTeam
0 James Team A Null
1 David Team B Null
2 George Team C Null
3 James Team B Team A
4 James Team C Team B
>>> old_teams = df[["Player", "PreviousTeam"]].rename(columns={"PreviousTeam": "Team"})
>>> all_teams = df[["Player", "CurrentTeam"]].rename(columns={"CurrentTeam": "Team"})
>>> current_teams = (pd.merge(all_teams, old_teams, indicator=True, how="outer")
.query("_merge == 'left_only'")
.drop("_merge", axis=1)
.reset_index(drop=True))
>>> current_teams
Player Team
0 David Team B
1 George Team C
2 James Team C
推荐阅读
- javascript - 错误的表情符号显示
- python - Python HTTP套接字:并不总是从发送JSON的客户端接收所有内容
- reactjs - 如何在函数 App() 父级和 Material-UI 嵌套侧边栏子级之间传递数据
- algorithm - 通过删除传递节点来减少图
- c# - 如何迁移实体框架中已经建立的一对多关系?
- javascript - 将经纬度坐标转换为 NMEA (DDDMM.MM)
- excel - 根据另一个单元格的值显示值
- javascript - Javascript:TypeError:回调不是函数
- azure-iot-hub - 查询设备孪生阵列属性
- python - 具有多个条件的 Python 排列(排列 4 组中的 24 个项目)