将多个文件中的数据检索到多个数据帧中

时间:2018-07-09 09:43:30

标签: python pandas dataframe glob

方案::我有一个文件夹中的文件列表(包括文件路径)。我试图将每个文件的内容放入一个数据框(每个文件一个),然后进一步执行一些操作,然后合并这些数据框。

从SO的其他各种问题中,我发现了遍历文件夹中的文件并获取数据的多种方法,但是我发现的所有方法通常都可以循环准备文件并自动将它们连接到单个数据帧中,对我不起作用。

例如:

import os
import pandas as pd
path = os.getcwd()
files = os.listdir(path)
files_xls = [f for f in files if f[-3:] == 'xls*']
df = pd.DataFrame()
for f in files_xls:
    data = pd.read_excel(f, 'Sheet1')
    df = df.append(data)

import pandas as pd
import glob
all_data = pd.DataFrame()
for f in glob.glob("*.xls*"):
    df = pd.read_excel(f)
    all_data = all_data.append(df,ignore_index=True)

我发现的唯一可以组合的代码是:

from os.path import isfile, join
import glob
mypath = "/DGMS/Destop/uploaded"
listoffiles = glob.glob(os.path.join(mypath, "*.xls*"))
contentdataframes = (pd.read_excel(f) for f in listoffiles)

此行运行无错误,但它们似乎什么也不做,没有变量,也没有创建或更改。

问题:我在这里做错了什么?有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

您真的很亲密,需要通过concat来自生成器的所有数据进行连接:

contentdataframes = (pd.read_excel(f) for f in listoffiles)
df = pd.concat(contentdataframes, ignore_index=True)

如果需要list of DataFrames

contentdataframes = [pd.read_excel(f) for f in listoffiles]