首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据特定列中的值对dataframe行排序

根据特定列中的值对dataframe行排序
EN

Stack Overflow用户
提问于 2020-03-14 16:44:18
回答 2查看 48关注 0票数 0

我有这个数据:

代码语言:javascript
运行
复制
d = {'important1': [1.1, 2.2], 'notimportant1': [1.4, 2.5], 'important2': [3.5, 4.2], 'notimportant2': [1.3,2.0]}
important_lst = ['important1', 'important2']
df = pd.DataFrame(data=d)

我想添加另一列,即important_lst中所有列的级别之和。

例如,在当前数据帧中,

  • 第一行的等级: 1,3,4,2所以等级之和是5 (1 +4)
  • 第二排的等级: 2,3,4,1,所以等级之和是6 (2 + 4)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-14 16:48:11

DataFrame.rank与按列表、和最后一次转换为整数的列一起使用:

代码语言:javascript
运行
复制
df['new_col'] = df.rank(axis=1)[important_lst].sum(axis=1).astype(int)
print (df)
   important1  notimportant1  important2  notimportant2  new_col
0         1.1            1.4         3.5            1.3        5
1         2.2            2.5         4.2            2.0        6
票数 1
EN

Stack Overflow用户

发布于 2020-03-14 16:47:19

您需要rank on axis=1来确定跨列的rank,然后在df.loc之后在axis=1上使用sum来过滤important_lst cols:

代码语言:javascript
运行
复制
df['new_col'] = df.rank(1).loc[:,important_lst].sum(1)
print(df)

代码语言:javascript
运行
复制
   important1  notimportant1  important2  notimportant2  new_col
0         1.1            1.4         3.5            1.3      5.0
1         2.2            2.5         4.2            2.0      6.0

注意:当您总结浮点数列时,如果不需要将它们舍入整数,最好将它们保持为浮点数(5.0整数的5)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60685041

复制
相关文章

相似问题

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