2016-09-30 4 views
0

sheet1とsheet2で多くのExcelファイルを追加しようとしています。私は次のコードファイルをExcelのファイルとマージする

import os 
import pandas as pd 

files = os.listdir("C:/Python27/files") 
files 
df = pd.DataFrame() 
for f in files: 
    data = pd.read_excel(f, 'Sheet1', 'Sheet2') 
    df = df.append(data) 

ファイルの例の名前書かれている :合計2014年4月、総2014年8月

次のエラーです:

Traceback (most recent call last): 
    File "C:/Python27/filemerge2.py", line 10, in <module> 
    data = pd.read_excel(f, 'Sheet1', 'Sheet2') 
    File "C:\Python27\lib\site-packages\pandas\io\excel.py", line 170, in read_excel 
    io = ExcelFile(io, engine=engine) 
    File "C:\Python27\lib\site-packages\pandas\io\excel.py", line 227, in __init__ 
    self.book = xlrd.open_workbook(io) 
    File "C:\Python27\lib\site-packages\xlrd\__init__.py", line 395, in open_workbook 
    with open(filename, "rb") as f: 
IOError: [Errno 2] No such file or directory: 'Total Apr 2014.xls' 

誰か場合、それは素晴らしいことですこのエラーで私を助けることができます

答えて

0

Python os.listdirは、を含むリストを返します指定されたディレクトリの中にあるファイルのうち、の名前を付けます。 "C:/Python27/files"(またはxlsファイルがあるフォルダ)以外のフォルダからスクリプトを実行している場合は、read_excel()関数(または呼び出したファイル管理機能)に必要なファイルへのフルパスを与える必要があります。

は、単にファイル名に、ベースフォルダを追加し、スクリプトを動作させるために、それが動作するはずです:

import os 
import pandas as pd 

folder = "C:/Python27/files" 
files = os.listdir(folder) 
files 
df = pd.DataFrame() 
for f in files: 
    data = pd.read_excel(folder + '/' + f, 'Sheet1', 'Sheet2') 
    df = df.append(data) 

お知らせos.listdirことが自分のタイプに関係なく、folder内のすべてのファイルとディレクトリを返します。 read_excel()でファイルを開く前に、ファイルタイプのチェックを実行してください(または、この呼び出しに依存するforループの内容を囲むtry-exceptブロックを使用してください)。

+0

ありがとう@csantos。今、新しいエラーが発生しました。 'Traceback(直近の最後の呼び出し): ファイル" C:/Python27/filemerge2.py "、行9、 データ= pd.read_excel(フォルダ+ '/' + f、 'Sheet1'、 'Sheet2') ファイル "C:¥Python27¥lib¥site-packages¥pandas¥io¥excel.py"、行178、read_excel squeeze = squeeze、** kwds) ファイル "C:\ Python27 \ lib \ site-packages \ pandas \ io \ excel.py "、434行目、_parse_excel のデータ[header] = _trim_excel_header(data [header]) TypeError:リストインデックスはstrではない整数でなければなりません。 – venkatsai

+0

[pandas documentation](http: /pandas.pydata.org/pandas-docs/stable/generated/pandas.read_excel.html)、 'read_excel'の3番目のパラメータは整数またはintのリストでなければなりませんが、' Sheet2代わりに ''。 – csantos

関連する問題