从不同文件夹读取多个文件

2024-04-20 00:35:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有相同的文件与季度数据保存在不同的文件夹对应的季度。换句话说,一个季度1文件夹,季度2,季度3,季度4。这是文件路径的唯一区别。我期待着读取所有四个文件中,并连接到一个数据库中。我可以使用下面的简化代码的一个版本手动执行此操作,并且每次都更改句点

period = ‘Q1’

filepath = ‘filepath/’ + period

file = filepath + ‘/file.xls’

df = pd.read_excel(file)

我想用某种形式的for循环(我假设)来自动化它。循环4个句点,将文件读入数据库,然后连接。我已经阅读了关于如何处理同一文件夹中的文件的其他答案。但在文件路径发生变化时,我很难做到这一点。手动将文件放入同一文件夹不是一个理想的解决方案

我试着让句点成为一个元组和一个包含所有4个句点的列表,然后是一个简单的for循环,但这不起作用。我收到以下错误信息

TypeError: Can't convert 'list' object to str implicitly

非常感谢您的建议


Tags: 文件数据代码路径版本文件夹数据库for
3条回答

您可以使用这些循环来创建完整的文件路径,并对其进行迭代以创建一个包含所有文件的数据帧

filepath = 'path/'
file = 'file.xlsx'
periods=['Q1','Q2','Q3','Q4']

files = []
for p in periods:
    files.append(filepath+p+'/'+file)
files

data = []
for f in files:
    data.append(pd.read_excel(f))

df = pd.concat(data)

你可能想要这样的东西:

periods = ['Q1', 'Q2', 'Q3', 'Q4']

df = None
for period in periods:
    filepath = 'filepath/' + period
    file = filepath + '/file.xls'
    if df is None:
        df = pd.read_excel(file)
    else:
        df.append(pd.read_excel(file))

首先使用列表理解获得所有文件的列表如何:

periods= ["Q1", "Q2", "Q3", "Q4"]
files = ["filepath/"+ p + "/file.xls" for p in periods]

然后用

dfs = []
for f in files:
    df = pd.read_excel(f)
    dfs.append(df)

相关问题 更多 >