2016-07-07 2 views
1

Привет, я пытаюсь запустить мой код python через несколько файлов excel и получить данные из каждого файла и сохранить в кадре данных. Вот мой код ..не может получить доступ к файлу excel, используя Pandas 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' 
+0

Я проверил ваш код с линией 'data = pd.read_excel (f, filename)' изменено на 'data = pd.read_excel (f)', и он работал нормально. Зачем использовать аргумент 'filename'? – Valilutzik

+0

Я пробовал, что .. он дает мне ту же ошибку также –

+0

Попробуйте решение ниже? – Valilutzik

ответ

1
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) 
+0

привет, я не очень уверен, где добавить это. –

+0

Вы можете поместить его в первую строку перед переменной 'path'. И, кстати, используйте 'data = pd.read_excel (f)' вместо 'data = pd.read_excel (f, filename)' – Valilutzik

0

Файл не найден, потому что вы вызываете относительную ссылку на файл 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) 
Смежные вопросы