我正在尝试打开来自特定目录的文件夹中的多个xls文件。我希望读入这些文件,并在一个数据框中打开所有这些文件。到目前为止,我可以访问该目录,并将所有xls文件放入如下列表中
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']我现在正在尝试将其放入一个数据帧中,如下所示:
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)然而,在这样做的时候,我有时会得到一个空白的数据帧,或者抛出一个错误,如下所示:
FileNotFoundError: [Errno 2] No such file or directory: 'ARK_Trade_02012021_0619PM_EST_601875e069e08.xls'对于这项任务,我们将真心感谢您的帮助。
提前谢谢。
发布于 2021-02-19 08:07:59
出现这个问题的原因是,如果您只是简单地输入文件名,解释器会假定它在当前工作目录中,因此您需要使用os模块来获取正确的位置:
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,那么它需要是一个列表。
发布于 2021-02-19 08:10:14
你可以添加一个中间步骤来检查路径是否存在,我怀疑这是你的服务器的一个孤立问题,当在较旧的windows服务器(即2012)上工作时,我有时会遇到即使路径100%存在也找不到路径的问题。
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)https://stackoverflow.com/questions/66269936
复制相似问题