使用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
相关产品推荐
相关产品推荐

