场景:我的文件夹中有一个文件列表(包括文件路径)。我试图将每个文件的内容放入一个数据帧(每个文件一个),然后进一步执行一些操作,然后合并这些数据帧。
从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/