1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Ë
dñúh ãó<—ddlmZddlZddlZddlmZdd„Zdd„Zy)é)Ú
accumulateN)Úprodc#ó¶K—ddlm}|r¸|jjdkDrt    |j|«}n t |jj «g}|D]c}g}|D]5}t|tj«r||«}|j|«Œ7|}|rdg|jjz|z}|–—Œe|r|jj–—d„|jD«}|jjdkDrt    |j«}t||jd¬««D]\}    }t |«}|r|    |z}|–—Œy­w)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.
    r)Ú    TimestampéNc3ó"K—|]}|g–—Œ    y­w)N©)Ú.0Úvs  úKH:\Change_password\venv_build\Lib\site-packages\openpyxl/utils/dataframe.pyú    <genexpr>z$dataframe_to_rows.<locals>.<genexpr>%sèø€Ò&˜”Ñ&ùs‚ F)Úindex)ÚpandasrÚcolumnsÚnlevelsÚ expand_indexÚlistÚvaluesÚ
isinstanceÚnumpyÚ
datetime64ÚappendrÚnamesÚzipÚ
itertuples)
ÚdfrÚheaderrÚrowsÚrowÚnr ÚexpandedÚdf_indexs
          r Údataframe_to_rowsr#    s:èø€õ!á Ø :‰:× Ñ  Ò !Ü §
¡
¨FÓ3‰D䘟™×*Ñ*Ó+Ð,ˆDØò        ˆC؈AØò Ü˜a¤×!1Ñ!1Ô2Ù! !› AØ—‘˜• ð ðˆCÙØf˜RŸX™X×-Ñ-Ñ-°Ñ3Ø‹Ið        ñ ؏h‰hn‰nÒá&˜RŸX™XÔ&€HØ    ‡xx×ј!ÒÜ §¡Ó)ˆô˜x¨¯©¸U¨Ó)CÓDò‰ˆ3ܐ3‹iˆÙ ؘS‘.ˆCØ‹    ñ    ùs‚EEc#óžK—t|j«}dgt|d«z}g}|D]\}dgt|«z}d}tt    ||««D]\}\}    }
|    |
k7s|sŒ|    ||<d}Œ|}|s|–—ŒL|j |«Œ^|r=t j|«j«j«}|D]}|–—Œyy­w)zv
    Expand axis or column Multiindex
    For columns use header = True
    For axes use header = False (default)
    NrFT)
rrÚlenÚ    enumeraterrrÚarrayÚ    transposeÚtolist) rrrÚprevious_valueÚresultÚvaluerÚ prior_changeÚidxÚcurrent_index_memberÚprevious_index_members            r rr1sòèø€ô%—,‘,Ó €FؐVœc &¨¡)›nÑ,€NØ €FàòˆØˆf”s˜5“zÑ!ˆðˆ ÜBKÌCÐPUÐWeÓLfÓBgò    $Ñ >ˆCÑ>Ð&Ð(=à#Ð'<Ò< Ø/C‘Ø#‘ ð        $ð ˆñØ‹Ià M‰M˜#Õ ð#ñ*Ü—‘˜VÓ$×.Ñ.Ó0×7Ñ7Ó9ˆØò    ˆCØ‹Iñ    ðùs ‚A%C Á(A%C )TT)F)Ú    itertoolsrÚoperatorrÚopenpyxl.compat.productrr#rr    ór ú<module>r5sðõ!ÛÛ Ý(ó%ôP&r4