gpt4 book ai didi

python - 提取三个最大值并将其放入单独的列中

转载 作者:行者123 更新时间:2023-12-01 00:40:35 25 4
gpt4 key购买 nike

我有一个棒球运动员及其效力球队的数据库。数据框可以简化如下:

df = pd.DataFrame({'teamID':['abc01','abc02','abc02'], 'playerID': ['p1','p2','p1'], 'score': [10,10,10] } )
teamID  playerID    score
abc01 p1 10
abc02 p2 10
abc02 p1 8
abc02 p3 1
abc03
...
zzz0z

现在我想添加三列,分别显示所有玩家的第一、第二和第三大得分,但按他们所参加的球队分组。特别是,我希望决赛 table 看起来像这样:

teamID  first   second  last
abc01 10 10 10
abc02 10 8 1
abc03
...
...
zzz0z

尝试了好几种方法,看来问题有点复杂。谁能给我提示吗?

最佳答案

首先按 DataFrame.sort_values 对多列的值进行排序,通过 GroupBy.cumcount 创建计数器列,按boolean indexing过滤top3并通过 DataFrame.pivot reshape :

df = df.sort_values(['teamID','score'], ascending=[True, False])

df['g'] = df.groupby('teamID').cumcount()

df = df[df['g'] < 3]
df = df.pivot('teamID','g','score').ffill(axis=1).astype(int)
df.columns = ['first','second','last']
df = df.reset_index()
print (df)
teamID first second last
0 abc01 10 10 10
1 abc02 10 8 1

关于python - 提取三个最大值并将其放入单独的列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57374631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com