熊猫交集的群体

use*_*979 3 python group-by intersection pandas

嗨,我正在努力寻找Player每一个出现的独特之处Team.

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
Run Code Online (Sandbox Code Playgroud)

结果应该是:

结果=

Team    Player    Number
A       Joe       8
A       Steve     11
B       Joe       4
B       Steve     19
C       Joe       6
C       Steve     18
Run Code Online (Sandbox Code Playgroud)

因为乔和史蒂夫是Player每个人中唯一的Team

roo*_*oot 5

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

df = df[df.groupby('Player')['Team'].transform('nunique') == df['Team'].nunique()]
Run Code Online (Sandbox Code Playgroud)

结果输出:

  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
Run Code Online (Sandbox Code Playgroud)