2017-03-03 33 views
3

私は今月の擦り傷のためのExcelファイルを作成するWebスクレーパーを持っています。今月の掻き落としとその屑を、毎回新しいシートとしてそのファイルに追加したいと思います。しかし、私の問題は、既存のシートを別の新しいシートとして追加するのではなく、新しいシートで上書きすることだけでした。私はxlrd、xlwt、pandas、openpyxlでそれをやろうとしました。既存のExcelファイルにpandas.DataFrameを追加

まだ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() 
+3

http://openpyxl.readthedocs.io/en/default/tutorial.html - 新しいシートを作成する方法を上に表示 – ryugie

答えて

3

パンダにはopen feature requestがあります。

コード:

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() 

テストコード:

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) 

(平均時間で

は、ここで既存のブックにpandas.DataFrameを追加機能でありますSource

+0

感謝します!これは非常によく書かれた関数のようにも見えます。私がそれに必要なものを正確にした。あなたはスティーブンの男です! –

関連する問題