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

如何按多列排序DataFrame并剔除不符合排序规则的行

解决方法

可以用Pandas的排序和累积最小值函数快速实现需求,步骤如下:

  1. 按列A升序排序:先把DataFrame按照A列从小到大排列,确保A列的顺序符合要求。
  2. 筛选B列的单调递减行:通过计算B列的累积最小值(cummin()),只保留B值等于对应累积最小值的行——因为累积最小值会记录到当前行为止的最小B值,若某行的B值大于累积最小值,说明它破坏了B列的递减趋势,需要剔除。

完整代码示例

import pandas as pd

# 构造原始DataFrame
df = pd.DataFrame({
    'A': [1, 4, 2, 6],
    'B': [8, 9, 5, 2]
})

# 按A升序排序
df_sorted = df.sort_values('A').reset_index(drop=True)

# 筛选符合B列降序规则的行
result = df_sorted[df_sorted['B'] == df_sorted['B'].cummin()]

print(result)

输出结果

AB
18
25
62

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 19:20:02