首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从不同目录的文件夹中打开Multiple`.xls`文件,并使用Pandas创建一个数据帧

从不同目录的文件夹中打开Multiple`.xls`文件,并使用Pandas创建一个数据帧
EN

Stack Overflow用户
提问于 2021-02-19 08:02:54
回答 2查看 42关注 0票数 0

我正在尝试打开来自特定目录的文件夹中的多个xls文件。我希望读入这些文件,并在一个数据框中打开所有这些文件。到目前为止,我可以访问该目录,并将所有xls文件放入如下列表中

代码语言:javascript
运行
复制
import os
import pandas as pd

path = ('D:\Anaconda Hub\ARK analysis\data\year2021\\february') 
files = os.listdir(path)

files
# outputting the variable files which appears to be a list. 
Output:
['ARK_Trade_02012021_0619PM_EST_601875e069e08.xls',
 'ARK_Trade_02022021_0645PM_EST_6019df308ae5e.xls',
 'ARK_Trade_02032021_0829PM_EST_601b2da2185c6.xls',
 'ARK_Trade_02042021_0637PM_EST_601c72b88257f.xls',
 'ARK_Trade_02052021_0646PM_EST_601dd4dc308c5.xls',
 'ARK_Trade_02082021_0629PM_EST_6021c739595b0.xls',
 'ARK_Trade_02092021_0642PM_EST_602304eebdd43.xls',
 'ARK_Trade_02102021_0809PM_EST_6024834cc5c8d.xls',
 'ARK_Trade_02112021_0639PM_EST_6025bf548f5e7.xls',
 'ARK_Trade_02122021_0705PM_EST_60270e4792d9e.xls',
 'ARK_Trade_02162021_0748PM_EST_602c58957b6a8.xls']

我现在正在尝试将其放入一个数据帧中,如下所示:

代码语言:javascript
运行
复制
frame = pd.DataFrame()

for f in files:
    data = pd.read_excel(f, 'Sheet1')
    frame.append(data)
    
df = pd.concat(frame, axis=0, ignore_index=True)

然而,在这样做的时候,我有时会得到一个空白的数据帧,或者抛出一个错误,如下所示:

代码语言:javascript
运行
复制
FileNotFoundError: [Errno 2] No such file or directory: 'ARK_Trade_02012021_0619PM_EST_601875e069e08.xls'

对于这项任务,我们将真心感谢您的帮助。

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2021-02-19 08:07:59

出现这个问题的原因是,如果您只是简单地输入文件名,解释器会假定它在当前工作目录中,因此您需要使用os模块来获取正确的位置:

代码语言:javascript
运行
复制
import os
import pandas as pd

path = ('D:\Anaconda Hub\ARK analysis\data\year2021\\february') 
files = os.listdir(path)

#frame = pd.DataFrame()   ...This will not work!
frame = []  # Do this instead 

for f in files:
    data = pd.read_excel(os.path.join(path, f), 'Sheet1')  # Here join filename with folder location
    frame.append(data)
    
df = pd.concat(frame, axis=0, ignore_index=True)

另一个问题是frame应该是列表或其他可迭代的。concat有用于数据帧的append方法,但是如果你想使用Pandas,那么它需要是一个列表。

票数 0
EN

Stack Overflow用户

发布于 2021-02-19 08:10:14

你可以添加一个中间步骤来检查路径是否存在,我怀疑这是你的服务器的一个孤立问题,当在较旧的windows服务器(即2012)上工作时,我有时会遇到即使路径100%存在也找不到路径的问题。

代码语言:javascript
运行
复制
import pandas as pd
from pathlib import Path 

# assuming you want xls and xlsx. 
files = Path('folder_location').glob('*.xls*') 

dfs = []

for file in files:
    if file.is_file():
        df = pd.read_excel(file, sheet_name='sheet')
        dfs.append(df)

final_df = pd.concat(dfs)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66269936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档