Re: [python] pandas to excel bez přepsání původních hodnot

2019-05-25 Tema obsahu Lumír Balhar
Dne pondělí 20. května 2019 19:00:18 UTC+2 radek...@gmail.com napsal(a):
> Dobrý den,
> mám tady další velice (určitě pro vás) jednoduchý problém, s kterým se 
> nedokážu poprat.
> 
> Mám napsaný skript, který mi každý den vypíše data a exportuje do .xlsx 
> souboru, kde filtruji do dvou sheets (BOT, SLD).
> 
> Potřeboval bych, aby se další den hodnoty doplnily na nový řádek opět podle 
> filtru (BOT, SLD). Takhle se tabulka pokaždé přepíše.
> 
> 
> # získání informace o vyplněných příkazech
> 
> exekuce = (e for e in ib.fills() if e.contract.secType == "STK")
> exekuce = 
> [(e.contract.symbol,e.time,e.execution.side,e.execution.shares,e.execution.avgPrice,e.execution.orderRef)
>  
>for e in exekuce]
> exe=pd.DataFrame(exekuce, columns=['symbol', 
> 'cas','smer','akcii','cena','ref'])
> #exe['cas'] = pd.to_datetime(exe['cas'], format="%m/%d/%Y")
> exe.set_index("symbol",inplace=True)
> print(exe)
> 
> # DataFrame si pro kontrolu vypíšeme
> exe
> 
> # Uložíme do excelu, zvlášť nákup a zvlášť prodej
> exe_bot = exe[exe['smer']=='BOT']
> exe_sld = exe[exe['smer']=='SLD']
> 
> with pd.ExcelWriter('exekuce.xlsx') as writer:
> exe_bot.to_excel(writer, sheet_name='Nákup')
> exe_sld.to_excel(writer, sheet_name='Prodej')
> 
> 
> 
> Děkuji za případnou pomoc. Předem upozorňuji, že jsem naprostý začátečník, 
> tak snad je to srozumitelné.

Ahoj.

Nemám teď moc času, tak zkusím jen nastřelit možné řešení. Kdyby bylopotřeba 
více detailu, napiš a já doplním i s příklady.

Řešením problému je to, že místo vytváření nového pd.DataFrame si načteš ten 
původní z .xlsx souboru, doplníš jej o nové řádky a pak jej stejně jako doposud 
uložíš zpět do .xlsx souboru.

1. Načteš existující .xlsx soubor do dvou DataFramů (pro každý list jeden) - na 
to je funkce read_excel 
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_excel.html#pandas-read-excel
2. Ve svém programu si klidně stejně jako doposud vytvoříš dva nové DataFrame 
exe_bot, exe_std
3. Tyto nové hodnoty přidáš pomocí metody .append do DataFramů, které sis 
načetl  v bodě 1 ze souboru 
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.append.html
4. Uložíš DataFrame obsahující spojené nové a staré hodnoty zpět do .xlsx 
souboru jako doposud.

Jiné je v tom pro jednoduchost jen to, že si načtěš ze souboru staré hodnoty a 
před uložením je spojíš s novými hodnotami.

Snad to alespoň trošku pomůže. Kdyby ne, dodám více detailů i s příklady.

Lumír
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


[python] pandas to excel bez přepsání původních hodnot

2019-05-20 Tema obsahu radekmesner
Dobrý den,
mám tady další velice (určitě pro vás) jednoduchý problém, s kterým se nedokážu 
poprat.

Mám napsaný skript, který mi každý den vypíše data a exportuje do .xlsx 
souboru, kde filtruji do dvou sheets (BOT, SLD).

Potřeboval bych, aby se další den hodnoty doplnily na nový řádek opět podle 
filtru (BOT, SLD). Takhle se tabulka pokaždé přepíše.


# získání informace o vyplněných příkazech

exekuce = (e for e in ib.fills() if e.contract.secType == "STK")
exekuce = 
[(e.contract.symbol,e.time,e.execution.side,e.execution.shares,e.execution.avgPrice,e.execution.orderRef)
 
   for e in exekuce]
exe=pd.DataFrame(exekuce, columns=['symbol', 'cas','smer','akcii','cena','ref'])
#exe['cas'] = pd.to_datetime(exe['cas'], format="%m/%d/%Y")
exe.set_index("symbol",inplace=True)
print(exe)

# DataFrame si pro kontrolu vypíšeme
exe

# Uložíme do excelu, zvlášť nákup a zvlášť prodej
exe_bot = exe[exe['smer']=='BOT']
exe_sld = exe[exe['smer']=='SLD']

with pd.ExcelWriter('exekuce.xlsx') as writer:
exe_bot.to_excel(writer, sheet_name='Nákup')
exe_sld.to_excel(writer, sheet_name='Prodej')



Děkuji za případnou pomoc. Předem upozorňuji, že jsem naprostý začátečník, tak 
snad je to srozumitelné.
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz