2016-07-07 12 views
1

こんにちは私はいくつかのExcelファイルでPythonコードを実行し、各ファイルからデータを取得してデータフレームに保存しようとしています。ここに私のコード..は、Pandas Pythonを使用してExcelファイルにアクセスできない

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

:拡張子にチェックを回避し、ファイルのフルパスを取得するグロブを使用し、

また
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) 

:あなたはos.path.join()を使用してファイル名にパスを連結することで行うことができます'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、filename)'の代わりに 'data = pd.read_excel(f)'を使ってください。 – Valilutzik

0

ファイルがあるため見つかりませんExcelファイルへの相対参照を呼び出しているため、Pythonスクリプトがファイルと同じフォルダに存在しない可能性があります。したがって、呼び出されたスクリプトの場所に密接ではない絶対参照を使用します。私はラインを使用してコードをチェックし

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) 
関連する問題