首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据熊猫数据的阈值返回顶部n行

根据熊猫数据的阈值返回顶部n行
EN

Stack Overflow用户
提问于 2018-03-24 16:41:30
回答 1查看 136关注 0票数 0

以下是我的输入数据:

代码语言:javascript
复制
df = pd.DataFrame({'Company':['A','B','C','D','E','F'],'Industry':['Metals','Metals','IT','IT','IT','banking'],'ROE':[10,9,5,14,1,9],'ROCE':[10,5,5,1,10,9],'Threshold':[1,1,2,2,2,1]});df

所需产出如下:

代码语言:javascript
复制
dfout = pd.DataFrame({'Company':['A','D','E','F'],'Industry':['Metals','IT','IT','banking'],'ROE':[10,14,1,9],'ROCE':[10,1,10,9],'Threshold':[1,2,2,1]});dfout

逻辑:为每个行业获取具有顶级ROE和ROCE的行。N是dataframe中的“阈值”列。感谢您对此的投入。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-24 17:13:05

首先,按照ROE/ROCE对数据进行排序:

代码语言:javascript
复制
df = df.iloc[(-np.maximum(df.ROCE, df.ROE)).argsort()]

接下来,使用groupby + apply

代码语言:javascript
复制
df.groupby('Industry', group_keys=False, sort=False).apply(
    lambda x: x[:x['Threshold'].unique().item()]
).sort_index()

或,

代码语言:javascript
复制
df.groupby('Industry', group_keys=False, sort=False).apply(
    lambda x: x.head(x['Threshold'].unique().item())
).sort_index()

代码语言:javascript
复制
  Company Industry  ROCE  ROE  Threshold
0       A   Metals    10   10          1
3       D       IT     1   14          2
4       E       IT    10    1          2
5       F  banking     9    9          1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49467251

复制
相关文章

相似问题

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