如何在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
相关产品推荐
相关产品推荐

