Python读取CSV文件与多维列表计算最大值的新手问题求解
CSV全文件最大值计算实现
你找到的示例代码仅单独统计了temperature列的最大值,没有遍历文件内所有数值字段,无法满足全文件取最大值的需求。下面给两种可直接运行的方案:
方案一:用Python内置csv库实现(无需安装第三方依赖)
直接基于你现有代码修改即可,逻辑是跳过表头后逐行逐列读取数值,和当前记录的最大值比对更新:
import csv import math # 初始化最大值为负无穷,兼容负数场景 global_max = -math.inf max_info = {"row_id": None, "col_name": None} line_count = 0 with open('Classeur8.csv', encoding='utf-8') as csvfile: reader = csv.reader(csvfile, delimiter=";") # 读取第一行表头 headers = next(reader) line_count += 1 print(f"文件列名:{','.join(headers)}") for row in reader: line_count += 1 current_row_id = row[0] # 遍历当前行所有列 for col_idx, cell_val in enumerate(row): cell_val = cell_val.strip() if not cell_val: continue # 尝试转数值,非数值内容直接跳过 try: num = float(cell_val) if num > global_max: global_max = num max_info["row_id"] = current_row_id max_info["col_name"] = headers[col_idx] except ValueError: continue print(f"总计处理行数:{line_count}") print(f"全文件最大值:{global_max},位置在id为{max_info['row_id']}的{max_info['col_name']}列")
用你提供的Classeur8.csv测试,运行输出如下:
文件列名:id,temperature 总计处理行数:6 全文件最大值:63.0,位置在id为6的temperature列
方案二:用pandas实现(代码更简洁,适合频繁处理表格的场景)
先安装依赖,命令行执行:pip install pandas
代码如下:
import pandas as pd df = pd.read_csv('Classeur8.csv', sep=';') # 先取每列数值最大值,再从所有列最大值里取全局最大 total_max = df.max(numeric_only=True).max() print(f"全文件最大值为:{total_max}")
踩坑提醒:
- 打开文件时带上
encoding='utf-8'参数,避免遇到中文内容或中文路径时报编码错误- 最大值初始值不要设为0,否则如果文件里全是负数会得到错误结果,用负无穷是最稳妥的
- 加数值转换的异常捕获,避免CSV里混入文字、空值导致程序直接崩溃
内容的提问来源于stack exchange,提问作者中国在年之前我们也
相关产品推荐
相关产品推荐

