【问题标题】:Direct way to slice a string with f.read() to ultimately read in csv as pandas dataframe [duplicate]使用 f.read() 对字符串进行切片以最终在 csv 中作为 pandas 数据帧读取的直接方法 [重复]
【发布时间】:2026-02-02 22:50:02
【问题描述】:

我有一个 .csv 文件,我想打开它并最终将其保存为 pandas 数据框。该文件本身在数据框上方有一些垃圾文本,其标题以字符串Sample_ID 开头。我编写了一个代码,它分多个步骤完成这项工作,我现在想知道是否有更优雅的方式来做到这一点。这是我的代码

import pandas as pd
import re
from io import StringIO

with open('SampleSheet.csv') as f:
    ## read in the .csv file as a string
    step1 = f.read()

    ## subset the step1 file
    # define where my df should start
    start = 'Sample_ID'
    step2 = step1[step1.index(start):]

    ## read in step2 as a pandas dataframe with stringio
    step3 = pd.read_csv(StringIO(step2))

我想知道是否有一种方法可以直接使用f.read() 进行切片,这样我就可以少一步了。

我也尝试将pd.read_csv()skiprows 一起使用,但我很难分配以Sample_ID 开头的行号

【问题讨论】:

    标签: python-3.x pandas stringio


    【解决方案1】:

    您可以只使用read_csv() 来导入和读取文件,如下所示:

    df  =   pd.read_csv('SampleSheet.csv', header=3)
    

    其中 header 是在数据集开始之前要在文件顶部跳过的行数。

    【讨论】:

    • 问题是垃圾行的数量因我拥有的不同文件而异,这就是为什么我必须寻找模式Sample_ID