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

使用pandas读取Excel触发ValueError,求助实现Excel行搜索功能

问题解决与功能实现

报错原因分析

  • nrows 参数要求传入非负整数,你代码里传的是字符串 "nivel",而且 input() 获取的内容本身是字符串类型,未做类型转换,直接导致触发 ValueError。
  • 额外问题:你用 pd.read_excel() 读取 .csv 文件,应该改用 pd.read_csv();如果是 Excel 文件(.xlsx/.xls),文件名要对应正确后缀。

修正后的基础代码(读取指定行数)

先解决报错,实现读取前N行的功能:

import pandas as pd

def calculadora():
    # 获取输入并转为整数,增加异常处理避免非数字输入
    try:
        nivel = int(input("请输入要读取的行数:"))
        if nivel < 0:
            print("行数不能为负数")
            return
        # 根据文件类型选择读取方法,这里假设是CSV,若为Excel则用read_excel("Abc.xlsx")
        df = pd.read_csv("Abc.csv", nrows=nivel)
        print(df)  # 替换display为print,避免依赖Jupyter环境
    except ValueError:
        print("请输入有效的整数")

calculadora()

扩展:实现行搜索功能

如果要实现按关键词搜索行(匹配所有列内容),可以参考以下代码:

import pandas as pd

def search_rows():
    # 读取完整文件(Excel用read_excel,CSV用read_csv)
    df = pd.read_csv("Abc.csv")  # 若为Excel则改为pd.read_excel("Abc.xlsx")
    
    search_key = input("请输入要搜索的关键词:")
    # 遍历所有行,查找包含关键词的记录
    result = df[df.apply(lambda row: row.astype(str).str.contains(search_key).any(), axis=1)]
    
    if result.empty:
        print("未找到匹配的行")
    else:
        print("搜索结果:")
        print(result)

search_rows()

如果是按行号定位查询(行号从0开始计数),可以用:

import pandas as pd

def find_row_by_index():
    df = pd.read_csv("Abc.csv")
    try:
        row_num = int(input("请输入要查找的行号:"))
        if row_num < 0 or row_num >= len(df):
            print("行号超出文件范围")
            return
        print("指定行内容:")
        print(df.iloc[row_num])
    except ValueError:
        print("请输入有效的整数")

find_row_by_index()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 04:09:59