使用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")
这是他们的样子。
不过我想:
- 排除每个文件的最后一行(即File1.xls中的row4和row5; File2.xls中的row7和row8)。
- 添加一列(或覆盖列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