Pandas分类和分组

2024-05-15 16:47:54 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我有一个数据集,如球员和分数如下:

Team    Player  Scorer
raptors jim     32
mingos  john    31
dinos   sue     34
raptors joe     43
mingos  mark    56
dinos   luke    23

我想根据得分最低的人来排序。但是,我需要把这些团队分组在一起。所以得分最低的将是第一名,他的球队其他人将是下一名。其次是得分倒数第二的球员和他的球队,如下所示:

Team    Player  Scorer
dinos   luke    23
dinos   sue     34
mingos  john    31
mingos  mark    56
raptors jim     32
raptors joe     43

另外,如果我能有一个总结,每个团队的得分最低,顺序与上面的团队相同: 总结:

Team    Player  Scorer
dinos   luke    23
mingos  john    31
raptors jim     32

Tags: 团队johnteammarkplayer球员joeluke
3条回答

用于排序:

df.sort_values(["Team", "Scorer"])

在每个团队中获得最低分数:

df.groupby("Team").min().reset_index()

你试过这些吗:

答案1(排序):

df.groupby(['Team','Player']).agg({'Scorer': min}).reset_index()

答案2(最低分):

df.groupby('Team').apply(min).reset_index(drop=True)

这个例子对我有用:

import pandas as pd
df=pd.DataFrame([{"Team": "raptors", "Player":"jim", "Scorer":32},{"Team": "mingos", "Player":"john", "Scorer":31}, {"Team": "dinos",  "Player":"sue", "Scorer":34},{"Team": "raptors", "Player":"joe",  "Scorer":43},{"Team": "mingos", "Player":"mark", "Scorer":56},{"Team": "dinos", "Player":"luke", "Scorer":23}], 
            columns=["Team", "Player", "Scorer"])

df=df.sort_values(["Team", "Scorer"])
df.groupby("Team").min().reset_index()

显示:

    Team    Player  Scorer
0   dinos   luke    23
1   mingos  john    31
2   raptors jim     32

相关问题 更多 >