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

如何在Pandas DataFrame中筛选E列=1且按A、B、C、D优先级取行

解决Pandas按多列优先级筛选目标行的问题

没问题,我来帮你搞定这个筛选需求!咱们一步步来实现:

步骤1:构建示例DataFrame

先把你给出的示例数据转换成Pandas可处理的DataFrame:

import pandas as pd

# 构建示例数据
data = {
    'A': [4, 4, 4, 3, 5],
    'B': [4, 2, 4, 0, 0],
    'C': [3, 0, 1, 0, 0],
    'D': [1, 0, 1, 0, 1],
    'E': [1, 1, 1, 1, 0]
}
df = pd.DataFrame(data)

步骤2:筛选E列取值为1的行

先把满足基础条件(E列值为1)的行过滤出来:

filtered_rows = df[df['E'] == 1]

步骤3:按优先级降序排序

按照你要求的优先级(A→B→C→D,优先选值最大的行),对过滤后的行做降序排序——这样最符合要求的行就会自动排在结果的最顶部:

sorted_rows = filtered_rows.sort_values(by=['A', 'B', 'C', 'D'], ascending=False)

步骤4:提取目标行

直接取排序后的第一行,就是咱们要的最终结果:

target_row = sorted_rows.head(1)

简化写法(合并成一行)

如果喜欢简洁的代码,可以把上面的步骤合并成一行:

target_row = df[df['E'] == 1].sort_values(by=['A', 'B', 'C', 'D'], ascending=False).head(1)

最终输出结果

执行后target_row会输出你期望的目标行,完整保留列名和对应数据:

A  B  C  D  E
0  4  4  3  1  1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:22:19