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

Python pandas双条件筛选Excel数据:语句无效及语法问题求助

Python pandas双条件筛选数据问题解决

问题回顾

我是Python新手,想编写满足双条件的条件语句,当条件满足时输出对应行,但尝试过程中频繁遇到语法错误,或无任何输出。我有一个包含4列40行的Excel表格,数据示例如下:

Name  Age Pet(s) Married
john  30   1      yes
mary  25   2      no
...

期望逻辑:当df['Age'] > 20且df['Pet(s)'] > 2时,输出该行数据,遍历整个数据集。读取Excel文件无问题,仅条件语句存在问题,代码片段如下:

FilePath = "location of file"
FileName = "Name of file"

df = pd.read_excel(FilePath + '//' + FileName + '.xlsx'

...

For i in range( 0, len(df['age'])
    if ((df['age'] > 20) & (df['pet'] > 2)) 
      print line

错误点分析

  • 语法错误:Python关键字区分大小写,For应改为小写for;range()、pd.read_excel()都缺少闭合括号;if语句末尾必须加冒号。
  • 列名不匹配:数据中列名为Age和Pet(s),代码里用的df['age']、df['pet'],pandas列名严格区分大小写,导致无法正确取值。
  • 判断逻辑错误:直接用df['age'] >20得到的是布尔类型的Series(整列的判断结果),不是单条数据的判断,循环中无法直接用这个条件筛选单一行。
  • 遍历方式错误:循环中没有正确获取单一行的Age和Pet(s)值,print line也没有指定要打印的行数据。

正确实现方式

方法一:pandas向量式筛选(推荐)

pandas原生支持整列的条件筛选,代码简洁且效率更高,适合处理批量数据:

import pandas as pd

# 读取Excel文件,用f-string拼接路径更清晰
file_path = "location of file"
file_name = "Name of file"
df = pd.read_excel(f"{file_path}/{file_name}.xlsx")

# 双条件筛选:Age>20 且 Pet(s)>2,注意用&连接条件,每个条件加括号
filtered_rows = df[(df['Age'] > 20) & (df['Pet(s)'] > 2)]

# 直接输出所有符合条件的行
print(filtered_rows)

# 如果需要逐行打印,用iterrows()遍历筛选后的结果
for idx, row in filtered_rows.iterrows():
    print(row)

方法二:循环遍历单条数据(适合新手理解)

如果想通过循环逐行判断,需要正确获取每行的数值并判断:

import pandas as pd

file_path = "location of file"
file_name = "Name of file"
df = pd.read_excel(f"{file_path}/{file_name}.xlsx")

# 遍历每一行的索引
for i in range(len(df)):
    # 获取当前行的Age和Pet(s)值
    current_age = df.loc[i, 'Age']
    current_pets = df.loc[i, 'Pet(s)']
    
    # 单条数据判断用and连接条件
    if current_age > 20 and current_pets > 2:
        # 打印当前行的所有数据
        print(df.loc[i])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 22:07:28