首页 > 解决方案 > 如何找到具有多个匹配项的 id?

问题描述

给定一个 CSV 文件(实际上是来自 Kaggle 足球数据的数据集)。如何找出不是一对一匹配的“player_fifa_api_id”和“player_api_id”。

player_att.player_fifa_api_id.nunique()
11062

player_att.player_api_id.nunique()
11060

上图表明两者并不相同。

import numpy as np
import pandas as pd
player_att = pd.read_csv('Player_Attributes.csv',sep = ',') 
player_att.head()

部分数据如下:

player_fifa_api_id      player_api_id
  218353                       505942
  218353                       505942
  218353                       505942
  218353                       505942
  189615                       155782
  189615                       155782

grouped = player_att.groupby('player_fifa_api_id').count()

即使我对数据进行了分组,它也显示大多数 player_fifa_api_id 都有多个匹配项。

player_api_id       player_fifa_api_id  

2625                          14
2752                          17
2768                          17

示例数据显示重复,但有些player_api_id有多个player_fifa_api_id. 谁能告诉我如何找到这个?

标签: pythonpandas

解决方案


例如,如果您只需要获取具有多个对应 player_fifa_api_id 的 player_api_id,您可以简单地按 player_api_id 分组,然后获取所有 count() > 1 的 player_api_id。请参见下面的代码:

grouped_matches = player_att.groupby('player_api_id').count().reset_index()
non_unique_matches = grouped_matches.loc[grouped_matches['player_fifa_api_id']>1]['player_api_id']

上面的代码将输出一个包含多个 player_fifa_api_id 的 player_api_id 列表。您可以对 player_fifa_api_id 执行相同的操作。


推荐阅读