excel文件与python中的工作表合并

时间:2016-09-30 00:04:28

标签: python excel

我正在尝试使用sheet1和sheet2附加许多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'

如果有人可以帮我解决这个错误,那就太好了

1 个答案:

答案 0 :(得分: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块。)