Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从文件夹中的文件创建多个数据帧_Python_Python 3.x_Pandas_Dataframe - Fatal编程技术网

Python 从文件夹中的文件创建多个数据帧

Python 从文件夹中的文件创建多个数据帧,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我有一个文件夹,里面有很多文件。我想创建一个循环或函数,在这里我可以读取所有文件,并使用前缀格式'filename'+\u df为每个文件创建相应的数据帧 我有一段代码,可以读取所有内容并从文件夹中的所有文件创建一个大数据帧,但我不确定如何修改它以创建多个数据帧并使用文件名作为前缀: import os import pandas as pd path = os.path.join(os.getcwd(),'folder') files = [os.path.join(path,i) for

我有一个文件夹,里面有很多文件。我想创建一个循环或函数,在这里我可以读取所有文件,并使用前缀格式
'filename'+\u df
为每个文件创建相应的数据帧

我有一段代码,可以读取所有内容并从文件夹中的所有文件创建一个大数据帧,但我不确定如何修改它以创建多个数据帧并使用文件名作为前缀:

import os
import pandas as pd

path = os.path.join(os.getcwd(),'folder')

files = [os.path.join(path,i) for i in os.listdir(path) if os.path.isfile(os.path.join(path,i))]

df = pd.DataFrame()

for file in files:
    _df = pd.read_csv(file)
    df = df.append(_df)

如果有更好的方法,那也很好。

您可以在字典理解中创建数据帧字典:

dfs = {f'{file}_df': pd.read_csv(file) for file in files}
然后,对于每个数据帧,按键选择,例如,
file='myfile'

dfs['myfile_df']
感谢@Abdul Niyas p M的创意:

from pathlib import Path
dfs = {f'{Path(file).stem}_df': pd.read_csv(file) for file in files}
或:


您可以将所有数据帧存储到列表中。然后将所有数据帧合并为一个。我不想创建单个数据帧。我想在OP中为每个文件创建一个数据帧,
文件
看起来像一个abs路径列表。可能您可以使用
Pathlib
仅获取文件名
dfs={f'{Path(file).stem}\u df:pd.read\u csv(file)for file in files}
import os
dfs = {f'{os.path.basename(file)}_df': pd.read_csv(file) for file in files}