gL iHdZddlmZmZddlZddlZddlZddlm Z m Z m Z m Z m Z mZmZmZmZddlmZddlmZGddZGdd ZGd d ZGd d ZdZdZej:j=dgddZy)zG test where we are determining what we are grouping, or getting groups )date timedeltaN) CategoricalIndex DataFrameGrouperIndex MultiIndexSeries Timestamp date_range period_range)GroupingceZdZdZdZdZdZdZdZdZ e jjdd d gd Z d Zy ) TestSelectionc$tddggddg}|jd}tjtd5|dgdddtjtd 5|ddgdddy#1swY5xYw#1swYyxYw) NABcolumnsz"Columns not found: 'C'"matchCz^[^A]+$)rgroupbypytestraisesKeyError)selfdfgs h/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/pandas/tests/groupby/test_grouping.pytest_select_bad_colsz"TestSelection.test_select_bad_cols s Ax#s 4 JJsO ]]8+G H  seH ]]89 5  sCjM      sA:)B:BBc tgdtdtddtdddg}d}tjt| 5|j d dddtjt| 5|j d d gddd|j d }|j }|jjd k(sJ|jjd k(sJy#1swYxYw#1swYmxYw)N)rrrrrr)rdataz!Grouper for 'A' not 1-dimensionalrrrr) rrangerr ValueErrorrcountrnlevelssize)rr msggroupedcs r"'test_groupby_duplicated_column_errormsgz5TestSelection.test_groupby_duplicated_column_errormsg+s (a%1+uQPQST~/V 2 ]]:S 1  JJsO  ]]:S 1 # JJSz " #**S/ MMOyy  A%%%yy~~"""   # #sC7D7DD c|jdjj}|jddj}tj||d|d<|jdj d}|jdgdj d}tj||y)Nrrg?meanT numeric_only)rDr4)rrsumtmassert_series_equalr4aggassert_frame_equalrr resultexpecteds r"test_column_select_via_attrz)TestSelection.test_column_select_via_attr<sC""&&(::c?3'++- vx06 C%%4%8::c?#56::6B fh/c tgdgdtjjdj dtjjdj dtjjdj dd}|j dddgj }|j d|jdd j }|jddgd fj dj }tj||tj||y) NfoobarrDrErDrErDrDonerGtwothreerHrHrGrIrr'rrrr7Errr7r%)rrr7) rnprandom default_rngstandard_normalrr4rlocr9r<rr r>result2r?s r"test_getitem_list_of_columnsz*TestSelection.test_getitem_list_of_columnsFs MQYY**1-==a@YY**1-==a@YY**1-==a@   C#s,113**S/"**Qq/277966!_,-55c:??A fh/ gx0rAcJttddztjj dj dtjj dj dtjj dj dd}|j d|jddj}|j dddgj}|jddgd fj dj}tj||tj||tjtd 5|j dd jdddy#1swYyxYw) Nabcdrr')rrr%r&rrr)r%rrr%"Cannot subset columns with a tupler)rr%)rlistrLrMrNrOrrr4rPr9r<rrr+rQs r"!test_getitem_numeric_column_namesz/TestSelection.test_getitem_numeric_column_namesYs? 99((+;;A>99((+;;A>   Arzz!A/446**Q-A',,.66!Y,'//2779 fh/ gx0]]:-Q R ' JJqM$  $ $ & ' ' 's -#FF"ctjtd5|jddj dddy#1swYyxYw)NrWrr)rr7)rrr+rr4rr s r"+test_getitem_single_tuple_of_columns_raisesz9TestSelection.test_getitem_single_tuple_of_columns_raisesos? ]]:-Q R - JJsOH % * * , - - -s #AAc 4tgdgdtjjdj dtjjdj dtjjdj dd}|j ddj }|jddddgfj dj }|jdddf}|}tj||y) NrCrFrr'rJrrr) rrLrMrNrOrr4rPilocr9r:)rr r>as_frame as_seriesr?s r"test_getitem_single_columnz(TestSelection.test_getitem_single_columnts MQYY**1-==a@YY**1-==a@YY**1-==a@   C%**,66!c3Z-(005::<MM!Q$'  vx0rAfuncc"|jSNr8xs r"zTestSelection.s 1557rAc&|jdS)Nc"|jSrdre)ys r"rhz(TestSelection...s aeegrA)r;rfs r"rhzTestSelection.saee4E.FrActgddddd}|jddgddg}tjd d gddg }td d gd dgd|}||}t j ||y)Nrrrr)r%abr1drprqr1)rr))rr)namesrr')rpr1index)rrr from_tuplesr9r<)rrbr gbidxr?r>s r"test_getitem_from_grouperz'TestSelection.test_getitem_from_groupers YQQQ? @ ZZc #S#J /$$ff%5c3ZHAq6A7sCb fh/rActdddDijd}jfd}|j}|j}tj||y)NTuplesc3K|]=}tjjdjdddD]}||f ?ywrr)rnNrLrMrNintegers.0rgrks r" zJTestSelection.test_indices_grouped_by_tuple_with_lambda..OYY2215>>q!QGFAArrc&j|dfSNrr^rgr s r"rhzITestSelection.test_indices_grouped_by_tuple_with_lambda..ArA)rrindicesr9assert_dict_equalrrx gb_lambdar?r>r s @r")test_indices_grouped_by_tuple_with_lambdaz7TestSelection.test_indices_grouped_by_tuple_with_lambdase #  ZZ !JJ67 ::"" VX.rAN)__name__ __module__ __qualname__r#r2r@rSrYr\rarmark parametrizerzrrAr"rrsY #"01&',- 1& [["$FG 0 0/rArceZdZejj deedeejdeejde e dde ddgdZ dZd Zd Zd Zejj d d dgdZdZdZdZdZdZdZdZdZejj dgdgdedDcgc]}t9ddd|zc}}}gdZdZd Zd!Z d"Z!d#Z"d$Z#d%Z$d&Z%d'Z&ejj d(dd gd)Z'd*Z(ejj d(dd gd+Z)d,Z*ejj d-dgd.gd gd/ggd0Z+d1Z,d2Z-ejj d3d4e.d5ej^6fd7e.d5ej^egej^d89:fd;e.d5ej^egej^d89:fgd<Z0d=Z1d>Z2d?Z3y@cc}}}w)A TestGroupingrvabcderndtypez 2020-01-01periodscVttjdjddt d|}|j t ddj d |jddd |_|j t ddj d y) N rnrAB)rrvrF group_keysc|Srdrrfs r"rhz7TestGrouping.test_grouper_index_types..ArAc|Srdrrfs r"rhz7TestGrouping.test_grouper_index_types..rrA)rrLarangereshaperXrapplyrv)rrvr s r"test_grouper_index_typesz%TestGrouping.test_grouper_index_typess|ryy},,Q2DJe T 4=U 399+F88DbD> 4=U 399+FrActjtdz }t|tj}t j ||gddg}t tjjdjddd | }|jjtdd tdd gj}tdgd |_|jtdd tdd gj}t#j$|||jtdd tdd gj}t#j$||y)N)daysrDrErsrrdruWkeyfreqint64rlevelrr)rtodayrr r from_productrrLrMrNr reset_indexrrr8rrr9r<)rd0dates date_indexr r?r>s r"test_grouper_multilevel_freqz)TestGrouping.test_grouper_multilevel_freqs9ZZ\I2. .2tzz|,,,eU^E5>R ryy,,Q/88CEZ X NN  Wg%c2GC4PQ R SU  !!G4 5s +W5s-K L #%  fh/ 13 'qs)C D #%  fh/rActgdgdd}|jd}|j}|jtd}|j}t j ||d}t j t|5tdd }ddd|j}|j}t j ||d }t j t|5|jd }dddgd |d<|jdddd gf}t j ||y#1swYxYw#1swYHxYw)N)rrrrrrrrr)r%rnr&rrrrz6Grouper axis keyword is deprecated and will be removedrr)raxisz7DataFrameGroupBy.apply operated on the grouping columnsc"|jSrdrerfs r"rhz8TestGrouping.test_grouper_creation_bug..s quuwrArVr) rrr8rr9r<assert_produces_warning FutureWarningrrP)rr r!r?r>r/gprs r"test_grouper_creation_bugz&TestGrouping.test_grouper_creation_bugs /6HI J JJsO557 JJw3' ( fh/F  ' ' S A +c*C + JJsO fh/G  ' ' S A 0WW./F 0! <<C: . fh/ + + 0 0sE <E EEctgdgdgdd}|jdj}|jtdg}|j}t j |||jddgj}|jtdtdg}|j}t j |||jdtdg}|j}t j |||jtddg}|j}t j ||y)N)rrrrrr)rrrrr)r)rrrrrrr)rrr8rr9r<)rr r?r!r>s r"test_grouper_creation_bug2z'TestGrouping.test_grouper_creation_bug2s$$+=DV W ::c?&&( JJC() * fh/::sCj)--/ JJC('c*:; < fh/ JJW-. / fh/ JJC(#. / fh/rAc|tdd|}tjtdt d|ggd}t t jdd | }|jtd d j}tjtdgd d j|}t dg| }tj |||jtdj}|jdj}tj ||y)N20130101r)runitab)rGrHrIrsr'rrrurIMErz 2013-01-31)rnamerGr)r r rrXr*r rLrrrr8pd DatetimeIndexr as_unitr9r:)rrdtimiserr>exp_dtir?s r"test_grouper_creation_bug3z'TestGrouping.test_grouper_creation_bug3s QT:  $ $ $Zq3 ')  IIaw ' W7>?CCE"" | $ %Dw '$-  D  vx0W512668;;U;+//1 vx0rArbFTcRtgdgdd}tttdddgdz|r|j fdd }n|j d }t t |\}}|dk(sJ|j|}tj||y) Nrrrr)rr%r)r)XYr%)rrn)r7r&rc|Srdr)rymappings r"rhz.7s 73<rAF)bysort) rdictzipr*rnextiter get_groupr9r<)rrbr rxrr?r>rs @r"test_grouper_returning_tuplesz*TestGrouping.test_grouper_returning_tuples0s1 E Fs58h%9A%=>? 7eDBwU3Bd2hhxd# fh/rAcPtjgd}ddg|_tt j dgdd|}|j dtd gjd }|jj ddgjd }tj|||j td dgjd }|jj ddgjd }tj|||jd}|j dtd gjd }|jj ddgjd }tj|||j td dgjd }|jj ddgjd }tj||y) N)rpr)rpr)rpr)rqrrqr)rqr)outerinnerr&)rGrGrHrHrGrGrrurrTr5) r rwrtrrLrrrr4rr9r<)rrydf_multir>r? df_singles r"test_grouper_column_and_indexz*TestGrouping.test_grouper_column_and_indexAs  $$ H g& ))A,%O P !!3g(>"?@EESWEX  " * *C> : ? ?T ? R  fh/!!7#93"?@EESWEX  " * *GS> : ? ?T ? R  fh/((1 ""Cw)?#@AFFG   ! ! # + +S'N ; @ @d @ S  fh/""G'$:C#@AFFG   ! ! # + +WcN ; @ @d @ S  fh/rAcddg}tjgd|}ttjdj dd|}|j | j}|jj |j}|jjtj|_ tj||y) Nrgrk)rrrr)r)r%)rnr&rs rr)rur)r rwrrLrrrr4rrastyperr9r<)r idx_namesryr by_levels by_columnss r"test_groupby_levels_and_columnsz,TestGrouping.test_groupby_levels_and_columnsos#J $$%EYW ryy},,R33 ?JJYJ/446 ^^%--i8==? (//66rxx@  i4rAc(gd}ddg}tjgdgdgdgdgdgt}t||d}t ||}d}t j t| 5|jd d | j}dddtjd dgd dgd dgd dgd dggt} t||d} t | | } t j| t |j|}d} t j t| 5|jd d | j}dddt | j| } t j|| y#1swYxYw#1swYCxYw)Nrrr)rrrrT) categoriesordered)r(r+DataFrame.groupby with axis=1 is deprecatedrrr)rrobservedr%rru5The 'axis' keyword in DataFrame.groupby is deprecated)r(rv) rLarrayintrrr9rrrr8r<T) rrrrr( cat_columnsr depr_msgr> expected_dataexpected_columnsr?r/s r"*test_groupby_categorical_index_and_columnsz7TestGrouping.test_groupby_categorical_index_and_columns}st&3Z xx <|\ RTW 'w:tT D+ 6@  ' ' X F JZZQa(ZCGGIF J1a&1a&1a&1a&1a&!I3O + :t -9IJ fh/tvv[ 1E  ' ' S A JZZQa(ZCGGIF J-//9IJ fh/ J J J Js*#E<##F<FFc tdditjtdt ddgddg  }|j t d t dd gj}tdgditjtdt dd dgddg  }tj||y)NrrrrPrrGrHrsrurrr)rr rr r))rr) rr rrXr rrr8r9r<r=s r"#test_grouper_getting_correct_binnerz0TestGrouping.test_grouper_getting_correct_binners !H))dZ B?@PU   5 !7T#B C #%  * +))dZ qIJen  fh/rAc|jd}d}tjt|5|j}dddt }ddg}||k(sJy#1swY xYw)Nr&DataFrameGroupBy.grouper is deprecatedrrErD)rr9rrgroupersorted)rr rxr/rr>r?s r"test_grouper_iterzTestGrouping.test_grouper_itersb ZZ_6  ' ' S A !jjG !5>!!!  ! !s AA$ctjtd5|jgdddy#1swYyxYw)NzNo group keys passed!r)rrr+rr[s r"test_empty_groupszTestGrouping.test_empty_groupss1 ]]:-D E  JJrN   s 7Ac4|jd}d}tjt|5|j}ddd|jj d}|j d}tj ||y#1swYSxYw)NrrrTr5)rr9rrrr4r<)rr r0r/rr>r?s r"test_groupby_grouperz!TestGrouping.test_groupby_groupers~**S/6  ' ' S A &ooG &G$))t)<<r?rrRexp_key expected2s r"test_groupby_dict_mappingz&TestGrouping.test_groupby_dict_mappings D!9 D$<(,,U399dV$((/ vx0 'tF| <27#((*))G$((0((r?s r"$test_groupby_series_named_with_tuplez1TestGrouping.test_groupby_series_named_with_tuples]l%8 E CV$))+"Aq6*( )rActddd}ttjj dj d|}d}t jt|5|jd ddd|jd j}|j|jj}d|j_ tj||y#1swYzxYw) Nz 01-Jan-2013rMSrrrruz''Timestamp' object is not subscriptablerc |ddS)Nrr&rrs r"rhzDTestGrouping.test_groupby_grouper_f_sanity_checked..s 3q8rAc|Srdrrfs r"rhzDTestGrouping.test_groupby_grouper_f_sanity_checked..sarA)r r rLrMrNrOrr TypeErrorrr8rvrr9r:)rrtsr/r>r?s r"%test_groupby_grouper_f_sanity_checkedz2TestGrouping.test_groupby_grouper_f_sanity_checkeds="4@ BII))!,<>#$)))rAcd}tjt|5t|j|ddgdddy#1swYyxYw)NzEGrouper for '' not 1-dimensionalrr)rrr+rrvrr r/s r"%test_grouping_error_on_multidim_inputz2TestGrouping.test_grouping_error_on_multidim_inputs@U ]]:S 1 / RXXr3*~ . / / /s AA c>tgdgdgdg}tjgd|_d}t j t |5|jdddg }dddj}t j||y#1swY0xYw) Nrrr))r%rnr&)r!r' )rr)rrrrrrrr) rr rwrr9rrrfirstr<)rr rrxr>s r"test_multiindex_passthruz%TestGrouping.test_multiindex_passthrus 9i8 9++,DE @  ' ' X F 21a&1B 2 fb) 2 2s BBc|jdj}|jdj}tj|||jdj}|jdj}tj|||jddgj}|j }tj|||jddgj}|jddgj}tj||y)Nrrsecondr@)rr8r9r< sort_index)r multiindex_dataframe_random_datar>r?s r"test_multiindex_negative_levelz+TestGrouping.test_multiindex_negative_level s)1999CGGI3;;(;KOOQ fh/1999CGGI3;;';JNNP fh/199R9IMMO3>>@ fh/199W 9NRRT3;;W%< #%  fh/rAc,tjt|j|_d}t j t |5|jdddjdtjidddy#1swYyxYw)Nz7Passing a dictionary to SeriesGroupBy.agg is deprecatedrrFas_indexrQ) rLrr6rr9rrrr;r4r:s r"&test_multifunc_select_col_integer_colsz3TestGrouping.test_multifunc_select_col_integer_cols4ssYYs2::/ H  ' ' S A A JJq5J )! , 0 0#rww @ A A As 6B  BcZddgddgg}tj|}tddgg|}|jdj}|ddgk(sJ|jd gj}|ddgk(sJtddgd d gg|}|jdj}|jd gj}||k(sJtddgd dgg|}|jdj}|jd gj}t j ||y) Nr,values to filterrrrr)rOrPrr)r rwrrr(r9r)rlstmidxr r0r?r>s r"#test_multiindex_columns_empty_levelz0TestGrouping.test_multiindex_columns_empty_level<s4"["$56%%c* Cz4 0**[)00s|s"""**/0188s|s""" C1c(+T :::k*11./077!!! C1c(+T :::k*11./077 VX.rActgdgdgdgtjgdgdg}|jdgj}|jdj}t j ||t|jtjgdgdg}|jd gj}|jdj}t j ||t|jgd }|jd gj}|jdj}t j ||y) Nr#r)r%rnr&rr%rr)rprqrqr1rrrrrr)rrrrerYrqrr))rprrrZ)rqrYr1)rr from_arraysrr(r9rrN)rr r?r>df2df3s r"test_groupby_multiindex_tuplez*TestGrouping.test_groupby_multiindex_tupleTs  < 6**,@,+OP ::xj)00H%,, Xv. II**%';<  ;; |,33H%,, Xv. +TU;; |,33H%,, Xv.rActgdgdgdgtjgdgdg}|jdgdd gj }|jdgd j }t j |||jdgdd gj}|jdgd j}t j |||jdgdd gj}|jdgd j}t j |||jdgdd gj}|jdgd j} t j || |jdgdd gj} |jdgd j} t j | | |jdgdd gj} |jdgd j} t j| | y) Nr#rUrVrWrXrrrrrq) rr r[rr4r9r<r8r,minmaxr(r)rr expected_mean result_mean expected_sum result_sumexpected_count result_count expected_min result_min expected_max result_maxexpected_groups result_groupss r"4test_groupby_multiindex_partial_indexing_equivalencezATestGrouping.test_groupby_multiindex_partial_indexing_equivalencems   < 6**,@,+OP   H:.(/CDIIK jj(,S1668  m[9zz8*-x.BCGGI ZZ +C0446  lJ7XJ/80DEKKMzz8*-c288:  nl;zz8*-x.BCGGI ZZ +C0446  lJ7zz8*-x.BCGGI ZZ +C0446  lJ7**hZ0(H1EFMM H:.s3::  _m 0 or level < -1 only valid with MultiIndexr)rrr8rNrvrr9r<rtrrrrrr+) rrrFr frame deleveledresult0result1 expected0 expected1r/s r"test_groupby_levelzTestGrouping.test_groupby_levels1%%' --ad-3779--ad-3779MM)G"4";";$MGKKM MM)H"5"<"<4MHLLN & ' }}!!W,,,}}!!X--- gy1 gy1}}!!U[[%6%6q%9999}}!!U[[%6%6q%9999--gD-9==?--hT-:>>@ gy1 gy1<  ' ' S A HggooAADoAEEGGggooAADoAEEGG H gy{{3 gy{{3C ]]:S 1 JJQJ    H H  s$AK>"L >L Lc$tdgdzdgdzztddjd}|dvr|j}d}nd }t j t | 5|jd| dddd |j|}tjt| 5t j t | 5|jd | ddddddy#1swYyxYw#1swYxYw#1swYyxYw)Nrr)rr&)expvar1ry)rrrrr)rrz&level name foo is not the name of the rD) rr* set_indexrr9rrr_get_axis_namerrr+)rrr rr/s r"test_groupby_level_index_namesz+TestGrouping.test_groupby_level_index_namess uqyC5194eAhG H R R   > !BDHNH  ' ' X F / JJUJ . /6r7H7H7N6OP ]]:S 1 3++MJ 3 T 2 3 3 3 / / 3 3 3 3s0"C.-D C:D.C7:D ?DDctddggdggdgdg}ttjd|}|j d| j }td d gddg}t j||tddggdggd gdg}ttjd|}|j d| j }td d gddg}t j||y)Nrrr )rrrrrrrr)rrrr)rrrr))levelscodesg @rurpg@g6@)rrrrrrrrg2@gr)r r rLrrr8r9r:)rrrvrr>r?s r"test_groupby_level_with_nasz(TestGrouping.test_groupby_level_with_nassFL)+-EF  299S> /.2243+aV4 vx0FL),.FG  299S> /.2243+c3Z8 vx0rAc|}d}tjt|5|jdddd}tjt|5|jdddddy#1swYCxYw#1swYyxYw)Nz*You have to supply one of 'by' and 'level'r)rr)rrr/r)rrFrqr/s r"test_groupby_argszTestGrouping.test_groupby_argssw0: ]]9C 0  MMO ; ]]9C 0 / MMTM . / /    / /sA3A?3A<?Bz sort,labels rrrrrrrr)r)r)) rrrrrrrr)r)r)c|jd|}tj|tj}t j |j jd|y)Nrrp)rrLrintpr9assert_almost_equal_grouperr)rrlabelsrFr0 exp_labelss r"test_level_preserve_orderz&TestGrouping.test_level_preserve_ordersN3:::NXXfbgg.  w//55a8*ErAc|j|jjd}tjgdtj }t j|jjd|y)Nrrr) rrvget_level_valuesrLrrr9rrr)rrFr0rs r"test_grouping_labelsz!TestGrouping.test_grouping_labelss^2:: , 2 2 C CA F XXr?s r"test_list_grouper_with_natz'TestGrouping.test_list_grouper_with_nats  :s MN Off f40WI&l+U4c 3C-DE V]]H5G$l+S1 V]]H5rAz func,expected transformrrrr;rrr)rrrvrctggd}|jdd}t|d|d}tj||y)NrrFrrc|Srdrrfs r"rhz>TestGrouping.test_evaluate_with_empty_groups..,sqrA)rrgetattrr9r:)rrbr?r r!r>s r"test_evaluate_with_empty_groupsz,TestGrouping.test_evaluate_with_empty_groupssK42"~ & JJqUJ +$1t$[1 vx0rAc tgdd}|jg}|j}|jt gt j }tj||t|jjdk(sJtj|jjdt jgt jt j tj|jjdt jgt jt j |jjddk(sJ|j|}d}tj t"| 5|j$}dddj&}dg}||k(sJy#1swY xYw) Nrfloat64rrrrrz#SeriesGroupBy.grouper is deprecatedr)r rr4set_axisrrLrr9r:r6r groupingsassert_numpy_array_equal group_inforrrrrrt)rrgrr>r?rxr/rs r"test_groupby_emptyzTestGrouping.test_groupby_empty/se 2F) 4 YYr]::eBbgg67 vx02;;(()Q... ## KK " "1 %rxx"((277:K'L  ## KK " "1 %rxx"((277:K'L {{%%a(A---YYq\3  ' ' S A !jjG !8!!!  ! !s & GGc ntdtjdgdtjdgggdjddg}|j ddgj }tgt tdgd tgd ggggddg d gd}tj||y)Nrgrrrrrrstrrr)rrrtrr)r(rvrr) rrLnanr{rr8r rr9r<r=s r"%test_groupby_level_index_value_all_naz2TestGrouping.test_groupby_level_index_value_all_naMs 2662 rvvr 2 3_ )S#J  3*-113se51593MN2hCj E   fh/rAc 4tgdgdggd}|jddg}||jdk}|jdj }tdd gt gt jd  }tj||y) N){rpr)rrqr)r5categoryvaluerr5rrrrr)rrrv) rr{rrr8rrLrr9r<)rr emptyr>r?s r"#test_groupby_multiindex_level_emptyz0TestGrouping.test_groupby_multiindex_level_empty_s  o .8S \\4, -288a< t$((*I"((6  fh/rAN)4rrrrrrrrXrLrfloatr r rrrrrrrrrr rrrrr*r r)r1r8r;rArGrLrSr^rnrwr}rrrrrr rrrrr)rir s000r"rrs [[ $w- )"))A,  )"))AU+ , |Q / q 1   G G08000>14 [[VeT]3040 ,0\ 5060," 02& [[  16q : :AYtQQ ' : ** 1*./ *0(A/0/2=> [[VdE]3' 4' R3" [[VdE]31410 / [[ 1 2 2 3 FF F6  [[ARZZ0  "**E"BJJUV4W "**E"BJJUV4W  *1+*1"<0$ 0E ;s&H;rc6eZdZdZdZdZdZdZdZdZ y) TestGetGroupcttjgdgdgdd}|jd}t t |j }|j|}|jt|j}|jtt|}tj||tj|||jddg}t t |j }|j|}|jt|dj|df}|jtt|d|df}tj||tj||d }tjt| 5|jd dddtjt| 5|jd dddd }tjt| 5|jd dddy#1swYvxYw#1swYMxYw#1swYyxYw)N) 10-Oct-2013rr 11-Oct-2013rr)rDrDrErDrDrEr)DATElabelVALrrrrz"++c"++in::<=++c)C.12 gw/ gw/ JJ( )4>"++c"++yQ0>>@#a&IJ++s9SV#45s1v>? gw/ gw/M ]]:S 1  KK   ]]:S 1  KK  X ]]:S 1 / KK- . / /      / /s$I ;I2I% II"%I.ctgd}gd}|jtj|d||}|j tj dd}tddgddg}t j||d }tjt| 5|j tj d d dddy#1swYyxYw) N)r)rr!r&)rrnrr)rrnr)rruz"Interval\(10, 15, closed='right'\)rrr) rrrcutrIntervalr9r<rrr)rrrrbinsr!r>r?r/s r"test_get_group_empty_binsz&TestGetGroup.test_get_group_empty_binss l # IIbffQqT4(8I <R[[A./aVAq62 fh/3 ]]83 / - KK B+ , - - -s %&CCctgdgdgj}|jd}tdddgiddg}|jd}t j ||t jgd}td|Dcgc]}|fc}i}|jd}|jd}td|df|dfgiddg}t j ||ycc}w) N)rrrridsrurrr) 2010-01-01 2010-01-02rr)r)rrrrr9r<rr)rr rr?r>dtrgs r"test_get_group_grouped_by_tuplez,TestGetGroup.test_get_group_grouped_by_tuples 45eW E G G ZZ edD\21a&Ad# fh/ ^^T U b112 3 ZZ o.er!uhA%9:1a&I fh/ 2s C. ctdddDijd}jfd}|jtt |j j }|jtt |j j }tj||y)Nr|c3K|]=}tjjdjdddD]}||f ?ywr~rrs r"rzKTestGetGroup.test_get_group_grouped_by_tuple_with_lambda..rrrc&j|dfSrrrs r"rhzJTestGetGroup.test_get_group_grouped_by_tuple_with_lambda..rrA) rrrrrr(r7r9r<rs @r"+test_get_group_grouped_by_tuple_with_lambdaz8TestGetGroup.test_get_group_grouped_by_tuple_with_lambdas #  ZZ !JJ67 <<T"))..*:%; <=$$T$y/?/?/D/D/F*G%HI fh/rActjd}d}t||t}t d}|j |}t t|dJy)Nrrr7r4)rrr objectrrrr)rrvr(seriesrr0s r"test_groupby_with_emptyz$TestGetGroup.test_groupby_with_emptysT  $e62s#..)DM4(000rAcVtdtdi}tj|j dj d|j ddgttgddtgd }tj|j dj|tj|j dj||j gd }tj|j djd |y) Nrpabssbabrrn)rprqr)rrr)rvrr)r%rnr) rrXr9r<rrr^rr,r8nth)rr rys r"test_groupby_with_single_columnz,TestGetGroup.test_groupby_with_single_columns T)_- . bjjo77.s QYY[rAc|jSrd)yearrfs r"rhz9TestIteration.test_grouping_is_iterable..s AFFrAr)rrr)rtsframer0r!s r"test_grouping_is_iterablez'TestIteration.test_grouping_is_iterable s>//#8:J"KL!!++A. A  rActtjd}tjgd}tjgd}|j ||g}t |}dd|ddgfdd|d gfd d|d gfd d|d d gfg}t |D]8\}\\}} } ||\} } } | |k(sJ| | k(sJtj| | :y)Nr&)rprprprqrqrq12rrrrrprrrrrrqr%r)rn) r rLrrrrX enumerater9r:)rrk1k2r0iteratedr?rrGrHrIe1e2e3s r"test_multi_iterzTestIteration.test_multi_iters 299Q<  XX4 5 XX4 5))RH%= #q!Qy ! #q!v  #q!v  #q!Qy !   '0&9 . "A" cE!!JBB9 99 9  " "5" -  .rActjgd}tjgd}ttjj dj dtjj dj d||dgd}|j dd g}t|}|j}d d |j|d gfd d |j|ddgfdd |j|ddgfdd |j|dgfg}t|D]8\} \\} } } || \} }}| | k(sJ|| k(sJtj| |:tjgd|d<tjgd|d <|j dd g}|Dcic]\}}|| }}}t|dk(sJ|j gdj}d}tjt |5|j"j dd}ddd|D]\}}ycc}}w#1swYxYw)N)rqrqrqrprprprrr&)v1v2rr)rGrHrIfourfivesixrurrrprr%rr)rnrqrr)rrrrrrrrrrr?)rLrrrMrNrOrrXrvrPrr9r<r6r4rrr)r three_grouprrr r0rryr?rrGrHrIrrrrgpr( three_levelsrgroups r"test_multi_iter_framez#TestIteration.test_multi_iter_frame*sM XX4 5 XX4 5 ii++A.>>qAii++A.>>qA   A **dD\*=hh #rvvc1#h' ( #rvvc1a&k* + #rvvc1a&k* + #rvvc1#h' (   '0&9 - "A" cE!!JBB9 99 9  ! !% ,  -88:;488:;4**dD\**11gc2#r'116{a#**?;@@B @  ' ' X F C"nn,,!6,BG C! JC  2  C Cs/ H> II c tt|jdtt|jddgtt|dj|dtt|dj|d|dgtt|jddtt|jddgdy)Nrrr)rrrr[s r" test_dictifyzTestIteration.test_dictifyZs T"**S/ "# T"**c3Z( )* T"S'//"S'* +, T"S'//2c7BsG"45 67 T"**S/#& '( T"**c3Z(- ./rActddgddgdtjddg}|jt d d g}t |j d k(sJ|jd k(sJtd df|j vsJtd df|j vsJ|jtd df}tj||jdgddf|jtd df}tj||jdgddftgdgddtjgd}|jt d d g}t |j d k(sJ|jd k(sJtd df|j vsJtd df|j vsJ|jtd df}tj||jdd gddf|jtd df}tj||jdgddftgdgddtjgd}|jt d d g}t |j dk(sJ|jdk(sJtd df|j vsJtd df|j vsJtddf|j vsJ|jtd df}tj||jdgddf|jtd df}tj||jdgddf|jtddf}tj||jd gddfy)Nstart.)eventchange 2014-09-10 2013-10-10rurr4rrz 2014-09-30z 2013-10-31rr)rrr)rri#)rrz 2014-09-15)rrz 2014-08-05r)z 2014-08-31) rrrrrr6r(ngroupsr rr9r<r^)rr r0ress r"test_groupby_with_small_elemz*TestIteration.test_groupby_with_small_elembs(T4L A""L,#?@ **g40':;7>>"a'''!###,'1W^^CCC,'1W^^CCC>"a'''!###,'1W^^CCC,'1W^^CCC>"a'''!###,'1W^^CCC,'1W^^CCC,'1W^^CCCr?s r"test_grouping_string_reprz'TestIteration.test_grouping_string_reprso  # #T%[$u+$> ?  {B / ZZ: '&&q)224)!!!rAN) rrrrrrrrr rrrAr"rrs'2 .(.`024h"rArctgdgdgddjd}|jtdtdgd }|jj d j rJ|jj d j sJd }tjt| 5|j}dddtd dgddgd}tj|y#1swY2xYw)Nrmr)rprqr1rprrqrFrIrrz*A grouping .* was excluded from the resultrrr!rn)rqr1) rr{rrrrin_axisr9rrr8r<)r rxr/r>r?s r"test_grouping_by_key_is_in_axisrs C D N Ns SB W3'S)9:U KB{{$$Q'/// / ;;  # + ++ + 7C # #M =1vQF34H&(+s 5C77Dc,tgddd}td}|j|}d}tjt |5|j }ddd|j usJd}tjt |5|j}ddd||jusJd }tjt |5|j}ddd||jusJd }tjt |5|jdddd }tjt |5|jdddy#1swYxYw#1swYxYw#1swYxYw#1swYaxYw#1swYyxYw) Nr=rrprqrprzUse GroupBy.groups insteadrzUse GroupBy.grouper insteadz-Grouper.obj is deprecated and will be removedzUse Resampler.ax insteadzGrouper.indexer is deprecated) rrrr9rrr(rrr'axindexer)r grperrxr/r s r"test_grouper_groupsrs_ + ,B  E E B &C # #M =ll "))   'C # #M =mm "++   9C # #M =ii "&&== $C # #M =  *C # #M = '   s< E E& E2 E> F E#&E/2E;>F Fattr) group_index result_indexgroup_arraylikectgdgdd}|jd}|d}tjt|5t |j jd|dddy#1swYyxYw)Nrmrrrpz is deprecatedrr)rrr9rrrrr)rr rxr/s r"test_depr_grouping_attrsrsj 3 4B CB F. !C # #M =0 %%a($/000s $A11A:) __doc__datetimerrnumpyrLrpandasrrrrrr r r r r pandas._testing_testingr9pandas.core.groupby.grouperrrrrrrrrrrrrAr"r's     0 H/H/^~ 0~ 0JB0B0Rb"b"J , <!ST0U0rA