将pandas.DataFrame添加到现有的Excel文件

我有一个网站刮板,为本月的刮伤创build一个excel文件。 我想在每次运行的时候,把当天的刮刮器和每一个刮刮器都添加到这个文件中作为新的纸张。 然而,我的问题是,它只是用新的工作表覆盖现有工作表,而不是将其作为单独的新工作表添加。 我试着用xlrd,xlwt,pandas和openpyxl来做。

还是崭新的Python,所以简单的赞赏!

下面是处理写入excel文件的代码。

# My relevant time variables ts = time.time() date_time = datetime.datetime.fromtimestamp(ts).strftime('%y-%m-%d %H_%M_%S') HourMinuteSecond = datetime.datetime.fromtimestamp(ts).strftime('%H_%M_%S') month = datetime.datetime.now().strftime('%m-%y') # Creates a writer for this month and year writer = pd.ExcelWriter( 'C:\\Users\\G\\Desktop\\KickstarterLinks(%s).xlsx' % (month), engine='xlsxwriter') # Creates dataframe from my data, d df = pd.DataFrame(d) # Writes to the excel file df.to_excel(writer, sheet_name='%s' % (HourMinuteSecond)) writer.save() 

pandas有一个开放的function要求 。

同时,这是一个将pandas.DataFrame添加到现有工作簿的function:

码:

 def add_frame_to_workbook(filename, tabname, dataframe, timestamp): """ Save a dataframe to a workbook tab with the filename and tabname coded to timestamp :param filename: filename to create, can use strptime formatting :param tabname: tabname to create, can use strptime formatting :param dataframe: dataframe to save to workbook :param timestamp: timestamp associated with dataframe :return: None """ filename = timestamp.strftime(filename) sheet_name = timestamp.strftime(tabname) # create a writer for this month and year writer = pd.ExcelWriter(filename, engine='openpyxl') try: # try to open an existing workbook writer.book = load_workbook(filename) # copy existing sheets writer.sheets = dict( (ws.title, ws) for ws in writer.book.worksheets) except IOError: # file does not exist yet, we will create it pass # write out the new sheet dataframe.to_excel(writer, sheet_name=sheet_name) # save the workbook writer.save() 

testing代码:

 import datetime as dt import pandas as pd from openpyxl import load_workbook data = [x.strip().split() for x in """ Date Close 2016-10-18T13:44:59 2128.00 2016-10-18T13:59:59 2128.75 """.split('\n')[1:-1]] df = pd.DataFrame(data=data[1:], columns=data[0]) name_template = './sample-%m-%y.xlsx' tab_template = '%d_%H_%M' now = dt.datetime.now() in_an_hour = now + dt.timedelta(hours=1) add_frame_to_workbook(name_template, tab_template, df, now) add_frame_to_workbook(name_template, tab_template, df, in_an_hour) 

( 来源 )