首页 > 解决方案 > 如何删除概念上的重复项?

问题描述

我必须处理与此类似的数据集:

    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)。

我可以摆脱詹姆斯过去球队的所有其他事件吗?

标签: pythonpandas

解决方案


基于此答案中的技术,我们可以摆脱作为 (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

推荐阅读