首页 > 解决方案 > 从不同的行开始读取多个 csv

问题描述

我正在尝试从一个目录中读取多个 csv 文件。文件以实际原始数据之前的摘要开头。原始数据从找到单词“max”的地方开始,它可以在任何行中。我有下面的代码,但它给了我以下错误: IndexError: list index out of range 谁能帮我解决这个问题?

csv_reader = csv.reader(open(file_path, 'rU'),dialect=csv.excel_tab)
max_found = False
max_row = None
for index, row in enumerate(csv_reader):

    if row[index]=='max’:
       print(row)
       max_row = index
       max_found = True
       print(max_found)
       df = pd.read_csv(file_path)

我尝试了以下修改代码,但程序不会停止运行。我可能做错了什么。

        n = 0
        with open(file_path,'rU') as fp:
            csv_reader = csv.reader(fp)
            while True:
                for line in csv_reader:
                    if line == "max":
                        break
                        print(line)
                        n = n + 1
                        df = pd.read_csv(file_path, skiprows=n)

标签: python

解决方案


因为您pd.read_csv()最终要读取数据,所以我建议您这样做:

n = 0
with open(file_path) as fp:
    while True:
        line = fp.readline()
        if line.startswith("max"):
            break
        n = n + 1
df = pd.read_csv(file_path, skiprows=n)

上面将包含要读取的 CSV 中带有“max”的行,如果您的意思是 CSV 从带有“max”的行下方的行开始,则将该行放在n = n+1if 语句之前。另外,这里我假设文件中必须存在以“max”开头的行。


推荐阅读