You need to enable JavaScript to run this app. Python Pandas如何筛选DataFrame同一行第一列值小于第二列值的行
优惠活动
大模型
产品
解决方案
定价
更多

Python Pandas如何筛选DataFrame同一行第一列值小于第二列值的行

Pandas 筛选同行列值满足「first-column 数值 < second-column 数值」的行

这类逐行对比两列数值的筛选场景,直接用Pandas原生布尔索引即可实现,全程为向量化运算,不需要手写循环,执行效率最高。
首先修正示例里的列名笔误:你提供的原始数据集里first- column列名带了多余空格,和输出样例的first-column格式不匹配,实际使用时要先保证列名和对比逻辑一致,否则会触发列不存在的报错。

实现步骤

1. 构造/读取目标DataFrame

import pandas as pd

# 对齐你提供的数据集内容
df = pd.DataFrame({
    "id": [0, 1, 2, 3, 4, 5, 6, 7],
    "first-column": [2, 1, 3, 7, 0, 9, 1, 7],
    "second-column": [1, 9, 5, 2, 1, 3, 5, 2]
})

如果你的原始数据集确实存在列名格式偏差的问题,可以用一行代码批量修正列名:

# 去掉列名中连字符后的多余空格,统一列名格式
df.columns = df.columns.str.replace('- ', '-')

2. 执行行筛选

直接将逐行对比的判断表达式作为行索引传入DataFrame,即可提取所有符合条件的行:

# 核心筛选逻辑:逐行判断first-column值小于second-column值
filtered_df = df[df["first-column"] < df["second-column"]]

注意:按照你提供的数据集数值逐行校验,实际符合筛选规则的行共4条,分别对应id为1、2、4、6的记录,你给出的输出样例存在数值遗漏。如果需要严格匹配你写的单条输出,可在筛选逻辑中追加id条件:

# 仅保留id=1且满足列值对比规则的行
filtered_df = df[(df["first-column"] < df["second-column"]) & (df["id"] == 1)]

注意事项

  • 参与对比的两列必须是可比较的数值类型,如果列值为字符串格式的数字,需要先用pd.to_numeric()做类型转换,否则会出现对比逻辑异常
  • 多条件组合判断时,每个独立条件需要用括号包裹,条件之间用&(逻辑与)、|(逻辑或)连接,不能直接用Python原生的and/or连接,否则会触发报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 07:45:01