Python 熊猫从不同的文件夹中读取多个文件

Python 熊猫从不同的文件夹中读取多个文件,python,pandas,Python,Pandas,我有相同的文件,每个季度的数据保存在与季度对应的不同文件夹中。换句话说,一个季度1文件夹,季度2,季度3,季度4。这是文件路径中唯一的区别。我希望在中读取所有四个文件,并将它们连接到一个数据库中。我可以使用下面的简化代码版本手动执行此操作,并每次更改周期 period = ‘Q1’ filepath = ‘filepath/’ + period file = filepath + ‘/file.xls’ df = pd.read_excel(file) 我想用某种形式的for循环(我假设

我有相同的文件,每个季度的数据保存在与季度对应的不同文件夹中。换句话说,一个季度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

非常感谢您的建议。

您可能需要这样的建议:

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))
complete_df = pd.DataFrame()
for i in range(1,5):
  quarter = 'Q'+str(i)
  filepath = 'filepath/' + quarter
  file = filepath + '/file.xls'
  df = pd.read_excel(file)
  complete_df = complete_df.append(df)

你可能想要这样的东西:

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))
complete_df = pd.DataFrame()
for i in range(1,5):
  quarter = 'Q'+str(i)
  filepath = 'filepath/' + quarter
  file = filepath + '/file.xls'
  df = pd.read_excel(file)
  complete_df = complete_df.append(df)

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

periods=[“第一季度”、“第二季度”、“第三季度”、“第四季度”]
files=[“filepath/”+p+“/file.xls”表示以句点表示的p]
然后使用

dfs=[]
对于文件中的f:
df=pd.read\u excel(f)
dfs.append(df)

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

periods=[“第一季度”、“第二季度”、“第三季度”、“第四季度”]
files=[“filepath/”+p+“/file.xls”表示以句点表示的p]
然后使用

dfs=[]
对于文件中的f:
df=pd.read\u excel(f)
dfs.append(df)

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

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)

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

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))
complete_df = pd.DataFrame()
for i in range(1,5):
  quarter = 'Q'+str(i)
  filepath = 'filepath/' + quarter
  file = filepath + '/file.xls'
  df = pd.read_excel(file)
  complete_df = complete_df.append(df)

您可以尝试以下方法:

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))
complete_df = pd.DataFrame()
for i in range(1,5):
  quarter = 'Q'+str(i)
  filepath = 'filepath/' + quarter
  file = filepath + '/file.xls'
  df = pd.read_excel(file)
  complete_df = complete_df.append(df)

你给我们的代码不能导致这个问题。我给的代码是有效的。当我将句点转换为元组或列表(如('Q1'、'Q2'、'Q3'、'Q4')时,会出现错误。要解决此问题,我需要的是导致问题的代码,而不是有效的代码。您提供的代码不会导致此问题。我提供的代码才有效。当我将句点转换为元组或列表(如('Q1'、'Q2'、'Q3'、'Q4')时,会出现错误。要解决此问题,我需要的是导致问题的代码,而不是有效的代码。