如何循环将多个csv文件作为不同的DataFrame导入,并且每个导入的DataFrame都有其文件名或至少一部分文件名

时间:2018-11-19 22:53:43

标签: python pandas csv dataframe import

这是我的第一篇文章。我想循环或在目录中进行迭代,以将每个文件作为单独的DataFrame导入,其名称类似于(至少使用数字)与其文件名类似的名称。 经过大量研究,我仍然不知道该怎么做。显然我是一个非常初学者:-)

我的代码是:

Main_folder =  os.getcwd()
Folders = os.listdir('.')

for file in Folders:
    data= pd.read_csv(file, sep="\t", header=0)
    data.columns=data.columns.str.strip()

例如Folders是文件名列表,包括文件扩展名。例如:

Folders=['01_load.TXT', '02_load.TXT', '03_load.TXT']

我需要的只是将所有文件导入我的工作空间,例如:

Load_01=pd.read_csv('01_load.TXT', sep="\t", header=0)
Load_02=pd.read_csv('02_load.TXT', sep="\t", header=0)

但是由于我有很多文件而处于循环中。

2 个答案:

答案 0 :(得分:2)

您可以使用字典:

data = {}
for file in os.listdir('.'):
    data[file] = pd.read_csv(file, sep="\t", header=0)
    data[file].columns = data[file].columns.str.strip()

然后,您将每个数据帧作为字典的键进行访问,例如:data['01_load.TXT']

可以设置variable variable names并对其进行访问,但不建议这样做或不建议这样做。

答案 1 :(得分:0)

在循环中创建对象时,不能给它们指定明确的名称。但是,您可以将它们添加到将它们与相关名称关联的数据结构中。我会在这里推荐字典。因此,例如,您可以执行以下操作:

Folders=['01_load.TXT', '02_load.TXT', '03_load.TXT'] # These should be called filenames not folders but anyway.

data_frames = {}    # Initialise a dictionary

for filename in Folders:
    df = pd.read_csv(filename, sep='\t', header=False)
    data_frames[filename] = df

# Now you can access any of the dataframes by the filename by using the dictionary:
# Let's say you want the df associated with 02_load.TXT

df = data_frames['02_load.TXT']
print(df.head())