关于python:如何使用一个函数或for循环导入大量csv数据文件?

How can I import a lot of csv data files using one function or for-loop?

本问题已经有最佳答案,请猛点这里访问。

我有109个csv文件要使用函数或for循环导入。到目前为止,我已经使用以下功能手动导入了这些文件:

1
2
3
4
5
import numpy as np

plain_table1 = np.genfromtxt('File-path\File-name1.csv', delimiter=',')
...
plain_table109 = np.genfromtxt('File-path\File-name109.csv', delimiter=',')

是否有一种更简单的方法来导入所有数据文件而不必手动键入所有数据文件?


使用字典理解,可以构造一个字典来存储数据,使用数字键来标识数组:

1
2
3
4
import numpy as np

d = {i: np.genfromtxt(f'File-path\File-name{i}.csv', delimiter=',') \
     for i in range(1, 110)}

然后,通过d[100]访问File-name100.csv中的数组。


只要所有文件都是".csv",就可以对任意数量的文件执行此操作。

1
2
3
4
import numpy as np
from os import listdir, path
plain_table = {file: np.genfromtxt(path.join(File-path,file), delimiter=',') for file in  listdir(FolderPath)}
print(len(plain_table))


在最简单的形式中,使用for循环和一个范围(假设您的文件名实际上是1到109)。在循环内部,可以附加到列表:

1
2
3
4
5
6
7
8
import numpy as np

first = 1
last = 109
plain_tables = []

for i in range(first, last + 1):
    plain_tables.append(np.genfromtxt('File-path\File-name%s.csv' % i, delimiter=',')

注意字符串中的%s。这是一个占位符。与%运算符一起使用,可以将变量获取到字符串中。

python中的其他特性也有同样的作用,比如列表理解:

1
2
plain_tables = [np.genfromtxt('File-path\File-name%s.csv' % i, delimiter=',')
                for i in range(first, last + 1)]