使用pandas合并/合并2个不同的Excel文件/工作表

我想结合2个不同的Excel文件。 (感谢post导入多个Excel文件到Pythonpandas和连接成一个数据框 )

我到目前为止所做的一个是:

import os import pandas as pd df = pd.DataFrame() for f in ['c:\\file1.xls', 'c:\\ file2.xls']: data = pd.read_excel(f, 'Sheet1') df = df.append(data) df.to_excel("c:\\all.xls") 

这是他们的样子。

在这里输入图像说明

不过我想:

  1. 排除每个文件的最后一行(即File1.xls中的row4和row5; File2.xls中的row7和row8)。
  2. 添加一列(或覆盖列A)以指示数据来自哪里。

例如:

在这里输入图像描述

可能吗? 谢谢。

对于数字。 1,你可以按照这里的说明指定skip_footer ; 或者,也可以这样做

 data = data.iloc[:-2] 

一旦你读了数据。

对于数字。 2,你可以这样做:

 from os.path import basename data.index = [basename(f)] * len(data) 

另外,将所有dataframe放在一个列表中,然后在最后连接它们也许会更好。 就像是:

 df = [] for f in ['c:\\file1.xls', 'c:\\ file2.xls']: data = pd.read_excel(f, 'Sheet1').iloc[:-2] data.index = [os.path.basename(f)] * len(data) df.append(data) df = pd.concat(df) 
 import os import os.path import xlrd import xlsxwriter file_name = input("Decide the destination file name in DOUBLE QUOTES: ") merged_file_name = file_name + ".xlsx" dest_book = xlsxwriter.Workbook(merged_file_name) dest_sheet_1 = dest_book.add_worksheet() dest_row = 1 temp = 0 path = input("Enter the path in DOUBLE QUOTES: ") for root,dirs,files in os.walk(path): files = [ _ for _ in files if _.endswith('.xlsx') ] for xlsfile in files: print ("File in mentioned folder is: " + xlsfile) temp_book = xlrd.open_workbook(os.path.join(root,xlsfile)) temp_sheet = temp_book.sheet_by_index(0) if temp == 0: for col_index in range(temp_sheet.ncols): str = temp_sheet.cell_value(0, col_index) dest_sheet_1.write(0, col_index, str) temp = temp + 1 for row_index in range(1, temp_sheet.nrows): for col_index in range(temp_sheet.ncols): str = temp_sheet.cell_value(row_index, col_index) dest_sheet_1.write(dest_row, col_index, str) dest_row = dest_row + 1 dest_book.close() book = xlrd.open_workbook(merged_file_name) sheet = book.sheet_by_index(0) print "number of rows in destination file are: ", sheet.nrows print "number of columns in destination file are: ", sheet.ncols