- 阅读权限
- 255
- 威望
- 0 级
- 论坛币
- 10475 个
- 通用积分
- 219.8551
- 学术水平
- 10 点
- 热心指数
- 20 点
- 信用等级
- 7 点
- 经验
- 33914 点
- 帖子
- 196
- 精华
- 0
- 在线时间
- 317 小时
- 注册时间
- 2015-5-8
- 最后登录
- 2021-8-13
|
简单思路:根据排序要求,生成一列新的rank,最后筛选rank=1的数据。(存在不清楚的,比如并列恰为第一的情况)贴代码:
- import pandas as pd
- # 生成数据
- df = pd.DataFrame({'name':['abcd_1','abcd_1','abcd_1','abcd_1','abcd_2','abcd_2','abcd_2','abcd_3','abcd_3','abcd_3','abcd_4','abcd_4'],
- 'score_1':[41.39,32.34,32.34,32.34,45.56,60.56,32.53,58.59,60.65,58.59,34,32.56],
- 'score_2':[1.00E-08,5.00E-08,5.00E-08,5.00E-08,5.00E-08,3.00E-08,5.00E-08,2.00E-08,1.00E-08,3.00E-08,2.00E-18,2.00E-11]}) # 生成数据,或者直接pd.read_excel获取
- def f(df):
- df['rank'] = range(1, df.shape[0] + 1)
- return df
- df = df.sort_values(by=['score_1', 'score_2'], ascending=(False, True)).groupby('name').apply(f) # 计算rank
- df[df['rank']==1].to_excel('new.xlsx‘) # 结果输出至新的excel
复制代码配图:
|
-
总评分: 论坛币 + 5
学术水平 + 1
热心指数 + 5
信用等级 + 1
查看全部评分
|