You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对DataFrame按A列降序、B列升序排序?

解决方案

完全可行,下面分两部分说明具体实现方式:

一、按A列降序、B列升序排序

使用pandas的sort_values()方法,通过指定排序字段和对应排序方向即可实现:

import pandas as pd

# 示例DataFrame
df = pd.DataFrame({'A': [3, 1, 2, 1], 'B': [5, 2, 7, 9]})

# 按A降序、B升序排序
sorted_df = df.sort_values(by=['A', 'B'], ascending=[False, True])

执行后sorted_df会先按A列从大到小排列,当A列值相同时,按B列从小到大排列。

二、获取A列值较小且B列值较大的元素列表

需要先明确“较小”和“较大”的具体判定规则,以下是两种常见场景的实现:

场景1:基于阈值筛选

设定A列的下限阈值和B列的上限阈值,筛选符合条件的行:

# 计算A列下四分位数(代表较小值)、B列上四分位数(代表较大值)
a_low = df['A'].quantile(0.25)
b_high = df['B'].quantile(0.75)

# 筛选A≤a_low且B≥b_high的行
target_rows = df[(df['A'] <= a_low) & (df['B'] >= b_high)]

# 转换为元素列表(每行以列表形式呈现)
target_list = target_rows.values.tolist()

场景2:优先取A最小且B最大的行

如果想要优先获取A列最小的行中B列最大的那些,可以先按A升序、B降序排序,再取前N个结果:

# 按A升序、B降序排序,最前面的就是A最小且B最大的行
priority_sorted = df.sort_values(by=['A', 'B'], ascending=[True, False])

# 取前3个符合要求的元素(可根据需求调整数量)
target_list = priority_sorted.head(3).values.tolist()

内容的提问来源于stack exchange,提问作者Rodrigo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 19:01:13