Python读取CSV并生成含零的指定列范围扩展列程序求助
Python实现CSV新增ranged列(包含零的范围计算)
针对你的需求,这里提供一个基于Python内置csv模块的实现,不需要额外安装库,适合新手操作:
import csv # 替换成你的输入/输出CSV文件路径 input_file = "your_input.csv" output_file = "your_output.csv" # 自定义范围计算逻辑,确保包含零的区间,可根据需求修改 def calculate_range(num): # 示例区间划分,你可以改成自己需要的范围 if num < 0: return "(-∞, 0)" elif 0 <= num < 5: return "[0, 5)" elif 5 <= num < 10: return "[5, 10)" else: return "[10, +∞)" # 读取原CSV并写入新文件 with open(input_file, 'r', newline='', encoding='utf-8') as in_csv, \ open(output_file, 'w', newline='', encoding='utf-8') as out_csv: # 用DictReader读取,方便按列名操作 csv_reader = csv.DictReader(in_csv) # 新增ranged列到表头 new_fieldnames = csv_reader.fieldnames + ['ranged'] csv_writer = csv.DictWriter(out_csv, fieldnames=new_fieldnames) # 写入表头 csv_writer.writeheader() # 逐行处理数据 for row in csv_reader: # 替换成你用来计算范围的列名,比如'amount'、'score'等 target_column = row['your_target_column'] try: # 转换为数值类型 num_value = float(target_column) # 计算范围并赋值给新列 row['ranged'] = calculate_range(num_value) except ValueError: # 如果目标列不是数字,填充提示内容 row['ranged'] = "非数值" # 写入处理后的行 csv_writer.writerow(row) print(f"处理完成!新文件已生成:{output_file}")
关键说明(新手必看):
- 路径修改:把
input_file和output_file的文件名改成你实际的CSV文件名,文件和脚本放在同一文件夹下直接写名字就行 - 目标列修改:把
your_target_column替换成你用来计算范围的列名(比如原CSV里的'数值'、'分数'列) - 范围规则修改:修改
calculate_range函数里的区间逻辑,按照你的需求调整包含零的范围划分 - 编码适配:如果你的CSV文件是GBK编码,把代码里的
encoding='utf-8'改成encoding='gbk'
测试建议:
先拿一小部分数据做测试,确认范围计算符合预期后再处理完整文件,避免出错。
内容的提问来源于stack exchange,提问作者user20807956
相关产品推荐
相关产品推荐

