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

读取CSV跳过7行表头存各列为变量且保留小数精度的解决方法

CSV读取问题解决思路

1. 跳过前7行表头的实现方法

  • 用Python内置csv标准库:
    读取文件后迭代调用next()7次,即可跳过前7行内容,示例代码:
    import csv
    with open("data.csv", "r", encoding="utf-8") as f:
        csv_reader = csv.reader(f)
        # 跳过前7行表头
        for _ in range(7):
            next(csv_reader)
        # 此处开始处理正式数据行
    
  • 用pandas库:
    直接在read_csv方法中传入skiprows参数指定跳过行数即可,代码更简洁:
    df = pd.read_csv("data.csv", skiprows=7)

2. 小数精度保留方案

  • 存储为string类型是完全可行的方案,不会出现任何精度丢失问题,若后续不需要对该列做数值运算,优先选择该方案。pandas读取时可通过dtype=str参数将所有列设为字符串类型,也可单独指定对应列的类型为字符串。
  • 若后续需要对列做数值计算,可改用Decimal类型存储,避免默认float类型的二进制精度丢失问题,使用csv库时可手动将读取到的字符串转换为Decimal,pandas可通过dtype参数指定对应列为Decimal类型。

3. 按位置提取列的修复方案

按位置提取列失败通常是表头未正确跳过、行内字段缺失导致索引越界、分隔符识别错误三类原因,可参考以下稳定实现逻辑:

import csv
# 定义存储各列的列表
col_a = []
col_b = []
col_c = []

with open("data.csv", "r", encoding="utf-8") as f:
    csv_reader = csv.reader(f)
    # 跳过7行表头
    for _ in range(7):
        next(csv_reader)
    for row in csv_reader:
        # 先校验行长度,避免索引越界
        if len(row) >= 5: # 假设你要取的最大列索引是4,行长度至少要到5
            # 按位置取列,索引从0开始计数
            col_a.append(row[0])
            col_b.append(row[2])
            col_c.append(row[4])

如果使用pandas,可通过iloc属性按位置提取列,示例:

import pandas as pd
# 跳过前7行,所有列读为字符串保证精度
df = pd.read_csv("data.csv", skiprows=7, dtype=str)
# 提取第0、2、4列,冒号表示取所有行
target_df = df.iloc[:, [0,2,4]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:18:01