Pandas 组交集

Pandas intersection of groups

您好,我正在尝试寻找出现在每个 Team 中的独特 Player

df =

Team    Player    Number
A       Joe       8
A       Mike      10
A       Steve     11
B       Henry     9
B       Steve     19
B       Joe       4
C       Mike      18
C       Joe       6
C       Steve     18
C       Dan       1
C       Henry     3

结果应该是:

结果 =

Team    Player    Number
A       Joe       8
A       Steve     11
B       Joe       4
B       Steve     19
C       Joe       6
C       Steve     18

因为乔和史蒂夫是每个 Team

中唯一的 Player

您可以使用 GroupBy.transform 来计算每个玩家所属的独特球队的数量,并将其与独特球队的总数进行比较。这将为您提供一个布尔数组,您可以使用它来过滤您的 DataFrame:

df = df[df.groupby('Player')['Team'].transform('nunique') == df['Team'].nunique()]

结果输出:

  Team Player  Number
0    A    Joe       8
2    A  Steve      11
4    B  Steve      19
5    B    Joe       4
7    C    Joe       6
8    C  Steve      18