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

标签 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)

此行运行没有错误,但它们似乎没有执行任何操作,没有变量或创建或更改。

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

最佳答案

你真的很接近,需要通过 concat 连接所有数据来自生成器:

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

如果需要DataFrames列表:

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

关于python - 将多个文件中的数据检索到多个数据帧中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51242510/

相关文章:

python - 基于 Pandas 中竖线分隔的列创建多个新行

python - 根据不同列的值从 Pandas 列表列中获取列表元素

python - 多个过滤器 Python Data.frame

python - Pandas 合并导致科学数字

python - 我可以将 Pandas 数据框转换为元组列表吗?

python - 如何正确安装 wxPython?

python - 如何执行多个系列的按元素求和,保留 NaN

r - 将命名字符向量转换为 data.frame

python - 如何将一个数据框中的每一行与其他数据框中的所有行进行比较并计算距离度量?

python - 获取最后创建的项目选择