首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在pandas的众多选项中选择项目

如何在pandas的众多选项中选择项目
EN

Stack Overflow用户
提问于 2020-05-15 03:35:29
回答 1查看 30关注 0票数 1

这个问题Calculate points with pandas没有很好地捕捉到我想问的问题,所以我在这里问它。我这里有这些数据

代码语言:javascript
复制
df = pd.DataFrame({'ENG':[10,3,5,6,3],'KIS':[9,5,7,9,10],'BIO':[10,'',4,'',4],'PHY':[9,5,'',10,12],'HIS':['','',9,7,8],'GEO':['',7,'',11,''],'CRE':[8,3,6,'','']})

我的程序是为数据中的每个人计算分数,从完成的5个对象中只选择4个。前两个科目是必修课。为了让其他两个主题相加以获得所需的4个,您需要在其余的主题之间进行权衡,从中选择表现最好的。

我的预期结果如下所示。

代码语言:javascript
复制
   ENG  KIS BIO PHY HIS GEO CRE  POINTS
   10    9   10   9           8    38
    3    5       5       7   3     20
    5    7   4       9       6     27
    6    9      10   7  11         36
    3   10   4  12   8             25

这就是我尝试过的

代码语言:javascript
复制
a = df['ENG'] + df['KIS'] + df[['BIO', 'PHY']].fillna(0).max(axis=1) + df[['HIS', 'GEO', 'CRE']].fillna(0).max(axis=1) 
df['POINTS'] = a
print(df)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-15 03:55:11

按值对每一行进行排序,然后选择最佳的两行并对其求和:

代码语言:javascript
复制
df = pd.DataFrame({'ENG':[10,3,5,6,3],'KIS':[9,5,7,9,10],'BIO':[10,'',4,'',4],'PHY':[9,5,'',10,12],'HIS':['','',9,7,8],'GEO':['',7,'',11,''],'CRE':[8,3,6,'','']})
df = df.replace('',0)
df[['BIO','PHY','HIS','GEO','CRE']].apply(lambda row: row.sort_values(ascending=False).head(2).sum() ,axis=1) + df['ENG'] + df['KIS']

0    38
1    20
2    27
3    36
4    33
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61805973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档