如何读取大量的 csv 索引文件

How ro read a lot of csv indexed files

我有 38 个 .csv 个文件,名为 Raw_data_unique_1Raw_data_unique_38,并且都具有相同的列结构。

我想使用我知道的指令 pd.read_csv 读取这些文件,然后将它们全部附加到 1 唯一文件中,比如 data_unique.

所以,我创建了一个索引列表:lst = list(range(1,39)) 并且认为我可以 运行:

for i in lst:
    data_i = pd.read_csv('C:/.../Raw_data_unique_i.csv', sep=',', header=0)

但是我有一个误会:名称Raw_data_unique_i.csv无法识别:“[Errno 2] No such file or directory”,意思是没有编号已分配给索引 i...

你能解释一下我做错了什么吗?

您的“i”不是这样的名称中的变量。

也许一个快速的 ficx 会声明:

folder = 'C:/.../Raw_data_unique_'
format = csv

然后连接

file_name = folder+i+format
data_i = pd.read_csv(file_name, sep=',', header=0)

但是请记住,如果您需要在循环迭代期间每个 data_i 工作,因为它每次都会被重写。如果您不想要那样,您应该查看您拥有的结构并找到一种更好地存储它的方法。

ps.: 如果你只想限制你的for迭代:

for i in range(1, 39):

使用f-string使字符串中的i取变量的实际值i:

for i in lst:
    data_i = pd.read_csv(f'C:/.../Raw_data_unique_{i}.csv', sep=',', header=0)

注意字符串前的f和字符串内的{i}

此操作不需要 Pandas

import shutil

with open('data_unique.csv', 'w') as out:
    for i in range(1, 40):
        with open(f'Raw_data_unique_{i}.csv') as inp:
            shutil.copyfileobj(inp, out)

这里我使用了f-strings to evaluate i inside the string. If you use Python < 3.6, use str.format方法:

with open('Raw_data_unique_{i}.csv'.format(i=i)) as inp: