【问题标题】:cannot access excel file using Pandas Python无法使用 Pandas Python 访问 excel 文件
【发布时间】:2016-11-10 10:34:07
【问题描述】:

您好,我正在尝试通过几个 excel 文件运行我的 python 代码,并从每个文件中获取数据并保存到数据框中。这是我的代码..

import os
import glob
import pandas as pd


path =r'C:\Users\user1\Desktop\test'
files = os.listdir(path)
files_xls = [f for f in files if f[-3:] == 'xls']   
df = pd.DataFrame()
for f in files_xls:
    filename, ext = os.path.splitext(f)
    data = pd.read_excel(f, filename)
    df = df.append(data)

a = df.describe()
print (a)

我收到此错误.. 我正在处理的文件夹中的第一个文件是 test.xls

Traceback (most recent call last):
  File "test.py", line 20, in <module>
    data = pd.read_excel(f, filename)
  File "C:\Users\user1\AppData\Local\Programs\Python\Python35-32\lib\site-   packages\pandas\io\excel.py", line 170, in read_excel
    io = ExcelFile(io, engine=engine)
  File "C:\Users\user1\AppData\Local\Programs\Python\Python35-32\lib\site-packages\pandas\io\excel.py", line 227, in __init__
    self.book = xlrd.open_workbook(io)
  File "C:\Users\user1\AppData\Local\Programs\Python\Python35-32\lib\site-packages\xlrd\__init__.py", line 395, in open_workbook
    with open(filename, "rb") as f:
FileNotFoundError: [Errno 2] No such file or directory: 'test.xls'

【问题讨论】:

  • 我检查了您的代码,将data = pd.read_excel(f, filename) 更改为data = pd.read_excel(f) 并正常工作。为什么使用filename 参数?
  • 我试过了..它也给了我同样的错误
  • 你试过下面的解决方案了吗?

标签: python excel python-3.x pandas dataframe


【解决方案1】:

找不到文件,因为您正在调用对 Excel 文件的相对引用,并且 Python 脚本可能与该文件不在同一文件夹中。因此,使用不依赖于被调用脚本位置的绝对引用。您可以通过使用os.path.join() 将路径连接到文件名来做到这一点:

import os
import pandas as pd

path = r'C:\Users\user1\Desktop\test'

files = os.listdir(path)
files_xls = [f for f in files if f[-3:] == 'xls']   

dfList = []
for f in files_xls:
    data = pd.read_excel(os.path.join(path, f))
    dfList.append(data)

df = pd.concat(dfList)

或者,使用 glob 避免检查扩展名并检索文件的完整路径:

import glob
import pandas as pd

path = r'C:\Users\user1\Desktop\test'
files_xls = glob.glob(path+'\*.xls')

dfList = []
for f in files_xls:
    data = pd.read_excel(f)
    dfList.append(data)

df = pd.concat(dfList)

【讨论】:

    【解决方案2】:
    import os
    import pandas as pd
    
    path =r'C:\Users\user1\Desktop\test'
    os.chdir(path)
    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)
        df = df.append(data)
    
    a = df.describe()
    print (a)
    

    【讨论】:

    • 你可以把它放在第一行path变量之前。顺便说一句,使用data = pd.read_excel(f) 而不是data = pd.read_excel(f, filename)
    猜你喜欢
    • 1970-01-01
    • 2023-02-10
    • 2021-08-08
    • 2013-05-11
    • 1970-01-01
    • 2017-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多