U Dx`$ @s8ddlmZddlZddlmZd ddZd dd ZdS) ) accumulateN)prodTc#sddl}ddlm|jj}tdd|D}dg||D]f}|j}|jj|j kr|| fdd| D}| |j }|}t|j|D]\} } | | <qq<|r*|jjdkrt|j|} nt|jjg} | D]R} g} | D]"}t||j r|}| |q| } |r"dg|jj| } | Vq|r:|jjVd d|jD}|jjdkrbt|j}t|D]6\}fd dt|D} |r|| } | VqjdS) a> Convert a Pandas dataframe into something suitable for passing into a worksheet. If index is True then the index will be included, starting one row below the header. If header is True then column headers will be included starting one column to the right. Formatting should be done by client code. rN Timestampcss|]}|jdVqdS)rN)shape).0br ?/tmp/pip-target-zr53vnty/lib/python/openpyxl/utils/dataframe.py sz$dataframe_to_rows..csg|] }|qSr r rvrr r sz%dataframe_to_rows..css|] }|gVqdS)Nr r r r r r 5scsg|]}|qSr r )rj)dataidxr r r:s)numpyZpandasr_datablockssumvaluesZdtypetypeZ datetime64arrayZravelZreshapertolistzipZmgr_locscolumnsnlevels expand_indexlist isinstanceappendindexnames enumeraterange)Zdfr"headerrrZncolsrrresultZcol_loccolrowsrownr Zexpandedr )rrrr dataframe_to_rows sJ         r,Fc #s|j}t|dg|j}fddt|tjD}dd|jD}t|D]^\}}dg|j}t|D]6\}} ||} || rd} | ||<|rh||| qh|sL|VqL|r|D] }|VqdS)zv Expand axis or column Multiindex For columns use header = True For axes use header = False (default) Ncsg|] }|qSr r )rsizedepthr r rJsz expand_index..cSsg|]}gqSr r )rlr r r rKs) Zlevshaperrroperatormulr#r$r!) r"r&rr*lengthsrrentrylevelr lengthr r.r r@s&  r)TT)F) itertoolsrr1Zopenpyxl.compat.productrr,rr r r r s   7