
    Oh                         d Z ddlmZmZ ddlZddlZddlZddlmZ ddl	Z
ddl	mZmZmZmZmZmZmZmZ ddlmZ ddlmZ ddlmZ ej4                  d        Zej4                  d	        Z G d
 d      Zy)z5
test with the TimeGrouper / grouping with datetimes
    )datetime	timedeltaN)using_string_dtype)	DataFrameDatetimeIndexIndex
MultiIndexSeries	Timestamp
date_rangeoffsets)Grouper)
BinGrouperc                      t        g dt        ddddd      t        ddddd      t        dddd	d      t        ddd
dd      t        j                  t        ddddd      gd      } | S )z
    DataFrame used by groupby_with_truncated_bingrouper, made into
    a separate fixture for easier reuse in
    test_groupby_apply_timegrouper_with_nat_apply_squeeze
                	   r     r   r      r   r   
      r         )QuantityDate)r   r   pdNaT)dfs    m/var/www/html/diagnosisapp-backend/venv/lib/python3.12/site-packages/pandas/tests/groupby/test_timegrouper.pyframe_for_truncated_bingrouperr#      sy     
+$1b!,$1b!,$Ar1-$Ar1-$1b!,
	

B I    c                     | }t        dd      }|j                  |      }t        |j                  j                        t        |j                  j
                        k7  sJ |S )a.  
    GroupBy object such that gb._grouper is a BinGrouper and
    len(gb._grouper.result_index) < len(gb._grouper.group_keys_seq)

    Aggregations on this groupby should have

        dti = date_range("2013-09-01", "2013-10-01", freq="5D", name="Date")

    As either the index or an index level.
    r   5Dkeyfreq)r   groupbylen_grouperresult_indexgroup_keys_seq)r#   r!   tdggbs       r"   !groupby_with_truncated_bingrouperr1   6   sU     
(B
f4
(C	CB r{{''(C0J0J,KKKKIr$   c                      e Zd Zej                  j                   e       d      d        Zej                  j                  dddg      d        Z	d Z
ej                  j                  d	g d
      d        Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd  Z d! Z!ej                  jD                  d"        Z#y#)$TestGroupByzTODO(infer_string))reasonc                    t        dj                         g dt        ddddd      t        ddddd      t        dd	dd
d      t        dd	dd	d      t        ddddd      t        ddddd      gd      }|j                  d      }||fD ]{  }|j	                  dg      }t        ddddd|j                  j                        }t        ddd|      }|j                  dt        i      }d|j                  d<   d|j                  d<   d|j                  d <   t        j                  g d!d"#      |j                  g d$df<   |j                  d      j                         }t        j                   ||       |j#                         }|j%                  t'        d%            j                         }t        j                   ||       |j%                  t'        d%            j                         }	t        j                   |	|       ~ y )&NzCarl Carl Carl Carl Joe Carlr   r   r   r   r   r   r   r   r   r      r   r   Buyerr   r   r   byr   2013090120131205r&   left)r)   name	inclusiveunit)r8   r   indexr8   CarlCarlCarl)r   r   CarlCarl)   r   Joe)r   r   )   rE   r   int64dtype)r   rE   r   r)   )r   splitr   sort_values	set_indexr   rB   r@   astypeobjectilocnparrayresamplesumtmassert_frame_equal
sort_indexr*   r   )
selfdf_originaldf_reorderedr!   exp_dtiexpectedresult1	df_sortedresult2result3s
             r"   test_groupby_with_timegrouperz)TestGroupBy.test_groupby_with_timegrouperP   s   
  7==?/T1aQ/T1aQ/T2q"a0T2q"a0T2q"a0T1aQ/
  #..*.=- 	5Bvh'B  XX]]G !+H
  '89H"0HMM$",HMM$#(HMM% +-88Jg+NHMM*a-(kk$'++-G!!'84I''T(:;??AG!!'84jjd!3488:G!!'84=	5r$   should_sortTFc                 >   t        dj                         dj                         g dt        ddddd      t        ddddd      t        dd	dd
d      t        dd	dd	d      t        ddddd      t        ddddd      gd      }|r|j                  dd      }|j	                  dd      }|j                  t        d            }|j                  sJ t        |j                  t              sJ |j                  }t        |t              sJ t        |      dk(  sJ y )NzA A A A A BzCarl Mark Carl Joe Joe Carl)r   r   r      r   r   r   r   r   r   r   r   r   r   r6   r   Branchr8   r   r   r   Fr:   	ascendingr   drop6MErK   r   )r   rL   r   rM   rN   r*   r   
group_keys
isinstancer,   r   groupsdictr+   )rY   rc   r!   gro   s        r"   %test_groupby_with_timegrouper_methodsz1TestGroupBy.test_groupby_with_timegrouper_methods   s   
 '--/6<<>.T1aQ/T1aQ/T2q"a0T2q"a0T2q"a0T2q"a0	
  :?B\\&u\-JJwE*+|||!**j111&$'''6{ar$   c                 H   t        dj                         dj                         g dt        ddddd      t        ddddd      t        dd	dd
d      t        dd	dd	d      t        dd	dd
d      t        dd	dd	d      t        ddddd      t        ddddd      gd      j                  d      }|j	                  dd      }||fD ]M  }t        dj                         g dt        ddddd      t        ddddd      t        ddddd      gd      j                  ddg      }d}|j                  t        d      dg      j                  d      }t        j                  ||       t        dj                         g dt        ddddd      t        ddddd      t        ddddd      t        ddddd      gd      j                  ddg      }|j                  t        d       dg      j                  d      }t        j                  ||       P t        dj                         dj                         g dt        dd	ddd      t        dd	ddd      t        dd	dd
d      t        dd	dd	d      t        dd	dd
d      t        dd	dd	d      t        dd	ddd      t        dd	ddd      gd      j                  d      }|j	                  dd      }||fD ]  }t        d!j                         g d"t        dd	ddd      t        dd	ddd      t        dd	ddd      t        dd	ddd      t        dd	ddd      gd      j                  ddg      }|j                  t        d#      dg      j                  d      }t        j                  ||       |j                  t        d$      dg      j                  d      }t        dj                         g dt        dd	ddd      t        dd	ddd      t        dd	ddd      gd      j                  ddg      }t        j                  ||       |j                         }|j                  t        d$d%      dg      j                  d      }t        j                  ||       t        j                  t        d&'      5  |j                  t        d$d(%      dg      j                          d d d        |j                  d      }|j                  t        d$d)      dg      j                  d      }t        j                  ||       |j                  t        d$d)      dg      j                  d      }t        j                  ||       t        j                  t        d*'      5  |j                  t        d$d()      dg      j                          d d d        |j                         }|j                   t#        j$                  d      z   |d<   |j                  t        d$d%      dg      j                  d      }t        dj                         g dt        dd+d,dd      t        dd+d,dd      t        dd+d,dd      gd      j                  ddg      }t        j                  ||       d-}t        j                  t        |'      5  |j                  t        d$dd.      dg      j                          d d d        t        dggdgt'        t        dd	ddd      gt#        j$                         d/      0      }|j                  t        d$            j                  d      }t        j                  ||       |j                  t        d$      g      j                  d      }t        j                  ||       |j                   j)                  d      |_        |j                   j*                  t#        j$                         k(  sJ |j                  t        d$d%            j                  d      }t        j                  ||       |j                  t        d$d%      g      j                  d      }t        j                  ||        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)1NzA A A A A A A Bz$Carl Mark Carl Carl Joe Joe Joe Carl)r   r   r   r   re   r   r   r   r   r   r   r   r   r   r   r   r6   r   rf   r   r   Frh   zCarl Joe Mark)r   r   r      r7   r8   z!The default value of numeric_onlyYErK   T)numeric_onlyzCarl Mark Carl Joe)r   r   r   r      6MSzCarl Joe Mark Carl Joe)rE   re   r      r   1D1MEr)   r(   z#'The grouper name foo is not found'matchfoo)r)   levelzThe level foo is not valid      z2The Grouper cannot specify both a key and a level!)r)   r(   r   r)   r>   columnsrB   )r   rL   r   rN   rM   r*   r   rU   rV   rW   reset_indexpytestraisesKeyError
ValueErrorcopyrB   r   MonthEndr   shiftr)   )rY   rZ   r_   r!   r]   msgresults          r"    test_timegrouper_with_reg_groupsz,TestGroupBy.test_timegrouper_with_reg_groups   su     +113?EEG4T1aQ/T1aQ/T2q"a0T2q"a0T2q"a0T2q"a0T2q"a0T2q"a0		
  )F
! 	$  ++zU+K		* 	4B ,224 + r2q!4 r2q!4 r2q!4
 i)*  6CZZd!3W =>BBPTBUF!!&(3 1779 - q!Q2 q!Q2 q!Q2 q!Q2		 i)*  ZZe!4g >?CCQUCVF!!&(3=	4@  +113?EEG4T2q"a0T2q"a0T2q"a0T2q"a0T2q"a0T2q"a0T2q"a0T2q"a0		
  )F
! 	$  ++zU+K		* h	4B 5;;= 0 r1a3 r1a3 r1a3 r1a3 r1a3
 i)*  ZZd!3W =>BBPTBUF!!&(3ZZe!4g >?CCQUCVF ,224 + r2q!4 r2q!4 r2q!4
 i)*  !!&(3 !BZZe!@' JKOO! P F !!&(3x/TU L

GE:GDEIIKL f%BZZe6!BG LMQQ! R F !!&(3ZZe1!=w GHLL! M F !!&(3z1MN N

Ge<gFGKKMN BG$4$4Q$77BvJZZe!@' JKOO! P F !,224 + r2q!4 r2q!4 r2q!4
 i)*  !!&(3 GCz5 

%V6BGL#% !##dBAq129I9I9KRXH ZZU 3488d8KF!!&(3ZZe!4 56:::MF!!&(3%^^11!4HN>>&&'*:*:*<<<<ZZU ?@DDRVDWF!!&(3ZZe!@ ABFF! G F !!&(3Qh	4NL LN N0 s$   #-a=-b
1.b=b	
b	b!	r)   )DMEru   zQE-APRc                    t        t        j                  g d      g dg dg dd      j                  d      }|j	                  d      d   j                  |      j                  d	
      j                         j                  ddg      j                         j                  d      }d|_        |j                         j	                  t        |      dg      d   j                         }t        j                  ||       |j	                  t        |      dg      d   j                         }t        j                  ||       y )N)2012100220121007201301302013020220130305r   20121207r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   )i  il  i  i     io  Z   i8  g  i-  r   i!  )r6      r   rG   '   r   r   r   -   "   r   r6   )dateuser_id
whole_costcost1r   r   r   r   )	min_countrH   rK   )r   r   to_datetimerN   r*   rT   rU   dropnareorder_levelsrX   rO   r>   r   rV   assert_series_equal)rY   r)   r!   r]   r^   r`   s         r"   %test_timegrouper_with_reg_groups_freqz1TestGroupBy.test_timegrouper_with_reg_groups_freq]  s      @ GA!#
F )F
G 	L JJy!,/Xd^S1SVX^VY/0Z\VG_ 	 % MMO##W$%7$CD\RVVX 	 	w1**g40)<=lKOOQ
w1r$   c                    t        dj                         g dt        ddddd      t        ddddd      t        dd	dd
d      t        dd	dd	d      t        ddddd      t        ddddd      gd      }|j                  d      }|j                  g d   |j                  ddg   |j                  dg   g}g d}||fD ]d  }|j                  t        dd            }t        ||      D ]7  \  }}t        |      }	|j                  |	      }
t        j                  |
|       9 f |j                  dg   |j                  dg   |j                  dg   g}g d}||fD ]k  }|j                  dt        dd      g      }t        ||      D ]<  \  \  }}}t        |      }	|j                  ||	f      }
t        j                  |
|       > m |j                  d      }|j                  d      }|j                  g d   |j                  ddg   |j                  dg   g}||fD ]c  }|j                  t        d            }t        ||      D ]7  \  }}t        |      }	|j                  |	      }
t        j                  |
|       9 e y )NzCarl Joe Joe Carl Joe Carlr   r   r   r   r   r   r   r   r   r   r6   r   r   r7   r   r9   )r   r   r   ry   )
2013-09-30
2013-10-31
2013-12-31r   r   r|   ))rF   r   )Carlr   )rF   r   r8   rK   )r   rL   r   rM   rQ   r*   r   zipr   	get_grouprV   rW   rN   )rY   rZ   r[   expected_listdt_listr!   groupedtr]   dtr   g_listbs                r"   test_timegrouper_get_groupz&TestGroupBy.test_timegrouper_get_group  s     5;;=/T1aQ/T1aQ/T2q"a0T2q"a0T2q"a0T1aQ/
 #..*.= Y'aV$aS!

 =- 	8Bjjd!?@G"7M: 88q\ **2.%%fh78	8 aS!aS!aS!

 X- 	8Bjj'7&+I!JKG$'$> 8 Aq\ **Ar73%%fh78	8 "++F3"..*.= Y'aV$aS!
 - 	8Bjjd!34G"7M: 88q\ **2.%%fh78	8r$   c                 b   t        ddgddgd      }|j                         }t        j                  |d         |d<   d }d}t	        j
                  t        |	      5  |j                  t        d
            j                  |      }d d d        d}t	        j
                  t        |	      5  |j                  t        dd            j                  |      }d d d        t	        j                  j                  d      j                  d             y # 1 sw Y   xY w# 1 sw Y   LxY w)N
10/10/2000
11/10/2000r   r   r   valuer   c                 >    t        | d   j                         gd      S )Nr   )rU   )r
   rU   xs    r"   sumfunc_serieszMTestGroupBy.test_timegrouper_apply_return_type_series.<locals>.sumfunc_series  s    1W:>>+,h77r$   7DataFrameGroupBy.apply operated on the grouping columnsr}   r(   r   r|   Trj   )r   r   r   r   rV   assert_produces_warningFutureWarningr*   r   applyrW   r   )rY   r!   df_dtr   r   r]   r   s          r"   )test_timegrouper_apply_return_type_seriesz5TestGroupBy.test_timegrouper_apply_return_type_series  s    | <BxPQ	uV}5f	8 H''SA 	Mzz'f"56<<^LH	MG''SA 	Y]]7&#ABHHXF	Y
D)8+?+?T+?+J	
	M 	M	Y 	Ys   +D.,D%D"%D.c                 ^   t        ddgddgd      }|j                         }t        j                  |d         |d<   d }d}t	        j
                  t        |	      5  |j                  t        d
            j                  |      }d d d        t	        j
                  t        |	      5  |j                  t        dd            j                  |      }d d d        t	        j                  j                  d      j                  d             y # 1 sw Y   xY w# 1 sw Y   LxY w)Nr   r   r   r   r   r   c                 6    | j                   j                         S N)r   rU   r   s    r"   sumfunc_valuezKTestGroupBy.test_timegrouper_apply_return_type_value.<locals>.sumfunc_value  s    77;;= r$   r   r}   r   r   r|   Trj   )r   r   r   r   rV   r   r   r*   r   r   r   r   )rY   r!   r   r   r   r]   r   s          r"   (test_timegrouper_apply_return_type_valuez4TestGroupBy.test_timegrouper_apply_return_type_value  s	    | <BxPQ	uV}5f	! H''SA 	Lzz'f"56<<]KH	L''SA 	X]]7&#ABHHWF	X
D)8+?+?T+?+J	
		L 	L	X 	Xs   +D,,D#D #D,c                 0   d}t        dd|      }t        t        j                  |      t        j                  |      d|      }|j	                  d       }|j
                  }t        t        t        |j                                     t              sJ y )Ni  z2012/1/15min)startr)   periods)highlowrA   c                 X    t        | j                  | j                  | j                        S r   )r   yearmonthdayr   s    r"   <lambda>z?TestGroupBy.test_groupby_groups_datetimeindex.<locals>.<lambda>
  s    x'G r$   )r   r   rR   aranger*   ro   rn   nextiterkeysr   )rY   r   indr!   r   ro   s         r"   !test_groupby_groups_datetimeindexz-TestGroupBy.test_groupby_groups_datetimeindex  sw    zHYYw'		'0BC3
 **GH $tFKKM23X>>>r$   c                 0   t        ddd      }t        g dg dd|      }|j                  d	      j                  }g d
}|D ci c]  }t	        |      t        |gd       }}t        j                  ||       |j                  d	      }|D ]}  }|j                  |      }|j                  |df   |j                  |df   gg}t        |gdd|j                        }	t        |t        d      |	      }t        j                  ||        y c c}w )Nz
2015/01/01r   r   )r   r>   )r   rE   rw   re   r   )r   r   r   ry   r   ABrA   r   )z
2015-01-05z
2015-01-04z
2015-01-03z
2015-01-02z
2015-01-01r>   r   r   r   )r>   r)   rJ   ABr   )r   r   r*   ro   r   r   rV   assert_dict_equalr   locrJ   listrW   )
rY   rB   r!   r   datesr   r]   r   dataexpected_indexs
             r"   "test_groupby_groups_datetimeindex2z.TestGroupBy.test_groupby_groups_datetimeindex2  s   <@_?C5Q&)00VLQ
DHIdO]D6??
 
 	VX.**6** 	4D&&t,FVVD#I&tSy(9:;D*V#U[[N !tDzPH!!&(3	4
s   Dc                    g d}t        g d|t        j                  dd      ddgdz  d	      }|d
   j                  d       |d
<   t	        g ddd
      }t        ddgdz  d      }t        j                  ||g      }t        g dg dd|ddg      }|j                  d
dg      j                         }t        j                  ||       t	        |d      }t        t        j                  dd      g dd|      }t	        g dd      }t        g dg dd|ddg      }|j                  d !      j                         }t        j                  ||       y )"N2011-07-19 07:00:002011-07-19 08:00:002011-07-19 09:00:00r   r   r   ar   r   r   r   r   rE   rH   rI   r   r   r   )labelr   value1value2r   c                     t        | d      S )N
US/Pacifictz)r   )ds    r"   r   zBTestGroupBy.test_groupby_groups_datetimeindex_tz.<locals>.<lambda>7  s    	!8U r$   r   r   r   r   r   r   r   )r   r>   r   r   r   r   r   r   r   ry   r   r   r   r   r   r   r   r   r   r   r   r   rB   r   z
Asia/Tokyor   r   r   r   r   r   r   rA   r   r   r   r   r   rw   r   ry   rE   r   r   )r   rR   r   r   r   r   r	   from_arraysr*   rU   rV   rW   )	rY   r   r!   exp_idx1exp_idx2exp_idxr]   r   didxs	            r"   $test_groupby_groups_datetimeindex_tzz0TestGroupBy.test_groupby_groups_datetimeindex_tz%  sm   
 7!))AW5a&1*	
 J--.UV:  
 #sag6(((H)=>)5GHx(
 Z12668
fh/ U|4yy'2>PQ

  Q
  I6x(
 !$((*
fh/r$   c                     t        dt        j                  d      fdt        j                  d      fgddg      }|j                  d      j	                         }|d   d   t        d      k(  sJ y )Nr   z
2012-07-03z
2012-07-04r   r   )r   )r   rR   
datetime64r*   firstr   )rY   r!   r   s      r"   &test_frame_datetime64_handling_groupbyz2TestGroupBy.test_frame_datetime64_handling_groupbyd  sk    |,-2==3N/OP&M
 C&&(f~a Il$;;;;r$   c           
         t        t        d      g dg dd      }|j                  dd      j                  j	                  d       }t        t        d	d
      t        dd
      t        dd      t        dd
      t        dd      gdt              }t        j                  ||       d
}|j                  d      j                  j                  |      }t        j                  |      j                  j                  |      }t        g dg dd      }t        j                  |      j                  j                  |      }t        j                  ||       y )Nr   )2000-01-28 16:47:002000-01-29 16:48:00z2000-01-30 16:49:002000-01-31 16:50:00z2000-01-01 16:50:00)America/Chicagor  America/Los_Angelesr  America/New_York)r   r   r   r   F)rm   c                 r    t        j                  |       j                  j                  | j                        S r   )r   r   r   tz_localizer>   r   s    r"   r   z9TestGroupBy.test_groupby_multi_timezone.<locals>.<lambda>  s$    bnnQ'**66qvv> r$   z2000-01-28 16:47:00-0600r  r   z2000-01-29 16:48:00-0600z2000-01-30 16:49:00-0800r  z2000-01-31 16:50:00-0600z2000-01-01 16:50:00-0500r  r   )r>   rJ   )r  r  r  )r   r   r   rB   r>   )r   ranger*   r   r   r
   r   rP   rV   r   r   r   r   r   r  )rY   r!   r   r]   r   
res_values
exp_valuess          r"   test_groupby_multi_timezonez'TestGroupBy.test_groupby_multi_timezonem  s8   q
( DU388>>>
 49JK49JK49NO49JK49KL 

 	vx0ZZ%**44R8

+..::2>Q


 >>*-00<<R@
vx0r$   c           
         g d}t        g d|D cg c]  }t        j                  |d       c}t        j                  dd      dd	gd
z  d      }t        j
                  g ddd      }t        ddgd
z  d      }t        j                  ||g      }t        g dg dd|ddg      }|j                  ddg      j                         }t        j                  ||       t        j
                  |d      }	t        t        j                  dd      g dd|	      }t        j
                  g dd      }t        g dg dd|ddg      }|j                  d      j                         }t        j                  ||       y c c}w ) Nr   r   hrK   rE   rH   rI   r   r   r   )r   periodr   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  rA   r  r  r  r   r   )r   r   PeriodrR   r   PeriodIndexr   r	   r  r*   rU   rV   rW   )
rY   r   r   r!   r  r  r	  r]   r   r
  s
             r"   test_groupby_groups_periodsz'TestGroupBy.test_groupby_groups_periods  s}   
 7;@Aa299QS1A))AW5a&1*	
 >> 
 #sag6(((H)=>)5GHx(
 Xw/0446
fh/ ~~e#.yy'2>PQ

 ..Q
  I6x(
 !$((*
fh/_ Bs   F

c                    t        ddg      }|d   j                  d      |d<   t        |d   j                  j                  t
        j                        sJ |j                  d      j                         }|d   j                  }t        |j                  t
        j                        sJ |d   j                  d      j                         }|j                  }t        |j                  t
        j                        sJ y )N)r        |>c )r   r%  r   zM8[ns]r   r   )	r   rO   
issubclassrJ   typerR   r  r*   r  )rY   r!   r   got_dts       r"   test_groupby_first_datetime64z)TestGroupBy.test_groupby_first_datetime64  s    02JKL1X&1"Q%++**BMM:::!$**,&++r}}555AQ'--/&++r}}555r$   c                 .   t        t        d      t        j                  d      d      }|j	                  d      d   j                  d       j                  d      }|j	                  d      d   j                         }t        j                  ||       y )N20130101r   r   r   c                 "    | j                         S r   )maxr   s    r"   r   z9TestGroupBy.test_groupby_max_datetime64.<locals>.<lambda>  s     r$   zM8[s])
r   r   rR   r   r*   r   rO   r-  rV   r   )rY   r!   r]   r   s       r"   test_groupby_max_datetime64z'TestGroupBy.test_groupby_max_datetime64  st     Yz21FG::c?3'--.?@GGPC%))+
vx0r$   c                     t        t        d      t        d      gdz  d      }|j                  d      d   j	                  d      }t        t        d      gdz  d      }t        j                  ||       y )Nr   z	2000-01-1r   r   r   minr   )r   r  r   r*   	transformr
   rV   r   rY   r!   r   r]   s       r"   test_groupby_datetime64_32_bitz*TestGroupBy.test_groupby_datetime64_32_bit  sj     U1XY{-C,Dq,HIJC%//69[12Q6SA
vx0r$   c           	      L   t        t        j                  j                  d      j	                  ddd      t        dddd	      d
      }|j                  d      j                         d   }|j                  d      d   j                         }t        j                  ||       y )Nr   r   r   <   )sizez01/01/2000 00:00sUTC)r   r)   r   )factortimer9  r:  )
r   rR   randomdefault_rngintegersr   r*   r-  rV   r   )rY   r!   df1df2s       r"   $test_groupby_with_timezone_selectionz0TestGroupBy.test_groupby_with_timezone_selection  s     ))//2;;Aqr;J"#5rPUV
 jj"&&(0jj"6*..0
sC(r$   c                 d   t        dgt        j                  t        j                        gd      }|d   d   j
                  t        j                  k(  sJ t        dg di      }t        j                  t        j                        |d<   |d   d   j
                  t        j                  k(  sJ y )Nr   )r   r   r   r   r   r   r   r   )r   r   nowpytzutctzinfo)rY   r!   s     r"   test_timezone_infozTestGroupBy.test_timezone_info
  s     aSTXX(>'?@A#wqz  DHH,,,Y'(,,txx(3#wqz  DHH,,,r$   c                     t        g ddz  t        ddd      d      }|j                  d      j                  j	                         }t        g d	t        g dd
      d      }t        j                  ||       y )NrB  r   rC  rE   r0  )r   r)   )r   r   r   )r   r   r   r   r   r  )	r   r   r*   r   countr
   r   rV   r   r2  s       r"   test_datetime_countzTestGroupBy.test_datetime_count  sd    a-*UAE*RS
 C&&,,.)5+EGT
vx0r$   c           	      @   t        t        j                  dddt        j                  gt        j                  t        d      t        d      t        d      t        j                  gd      }t	        j
                  |j                        |_        d	|d
<   ||j                  j                            }|j                  d
      }|j                  d
      }t        j                  |j                         |j                                t        j                  |j                         |j                                t        j                  |j                         |j                                t        j                  |j                         |j                                y )Nz2015-07-24 10:10z2015-07-25 11:11z2015-07-23 12:12r   )daysr   r   )r   tdr   group)r   rR   nanr   r   r   r   notnar*   rV   rW   r-  r0  r  last)rY   df_testdf_refgrouped_testgrouped_refs        r"   $test_first_last_max_min_on_time_dataz0TestGroupBy.test_first_last_max_min_on_time_data  s5     FF&&&FF FF1%1%1%FF
$ ^^GJJ/
))+,w/nnW-
koo/1A1A1CD
koo/1A1A1CD
k//1<3E3E3GH
k..0,2C2C2EFr$   c                    t        t        d      t        j                  t        d      gg dd      }t	        dd      }|j                  |      d   j                         }||j                  j                            j                  |      d   j                         }|j                  j                  d       |_	        t        j                  ||       y )	Nz2016-06-28 09:35:35z2016-06-28 16:46:28)123)r:  r   r:  r  r'   r   )r   r   r   r    r   r*   nuniquer:  notnullrB   
_with_freqrV   r   )rY   testgrouperr   r]   s        r"   %test_nunique_with_timegrouper_and_natz1TestGroupBy.test_nunique_with_timegrouper_and_nat>  s     34FF34
 (	
 f3/g&v.668		))+,44W=fEMMO!2248
vx0r$   c                 0   g dt        g dd      g dd}t        |      j                  d      }t        d	      }|j	                  |      }|j                         }|j	                  |g      }|j                         }t        j                  ||       y )
N)shanghaibeijingrb  )z2017-08-09 13:32:23z2017-08-11 23:23:15z2017-08-11 22:23:15zdatetime64[ns]rI   rB  )locationr:  r   r:  r   rK   )r
   r   rN   r   r*   rI  rV   rW   )rY   
data_framer_  r   r   r]   s         r"   !test_scalar_call_versus_list_callz-TestGroupBy.test_scalar_call_versus_list_callQ  s     <U& 

 z*44V<
s#$$W-$$gY/==?
fh/r$   c           
      h   d}t        j                  d|dd      }t        t        |      |      }|j	                  |j
                  j                        j                         }t        t        |      t        t        d|dz         |j                              }t        j                  ||       y )	Nr   z2018-01MMonth)r   r   r)   r>   rA   r   r   )r   period_ranger
   r  r*   rB   r   rU   r   r>   rV   r   )rY   r   rB   period_seriesr   r]   s         r"   test_grouper_period_indexz%TestGroupBy.test_grouper_period_indexe  s    W3W
 uW~U;&&}':':'@'@AEEG'N%a1(=EJJ"O
 	vx0r$   c                 0   |}|d   j                  d       }|j                  }|d   j                  j                  }t	        dddd|      }t        j                  |dgt        |      z  g      }t        g d	|d
      }t        j                  ||       y )Nr   c                     dt        |       iS )Nr   )r+   r   s    r"   r   zRTestGroupBy.test_groupby_apply_timegrouper_with_nat_dict_returns.<locals>.<lambda>{  s    eSV_ r$   r   
2013-09-01
2013-10-01r&   r)   r>   r@   r   )r   r   r   r   r   r   r   r  )r   obj_valuesr@   r   r	   r  r+   r
   rV   r   )	rY   r1   r0   resr!   r@   dtimir]   s	            r"   4test_groupby_apply_timegrouper_with_nat_dict_returnsz@TestGroupBy.test_groupby_apply_timegrouper_with_nat_dict_returnss  s     /n""#<=VV&z!!&&|$VRVW##S5'CH*<$=>/r
K
sH-r$   c           	         |}|d   j                  d       }|j                  }|d   j                  j                  }t	        dddd|      }t        dt        j                  t        j                  t        j                  t        j                  t        j                  d	g|j                  d       d
      }t        j                  ||       y )Nr   c                 V    t        |       r| j                  d   S t        j                  S )Nr   )r+   rQ   rR   rO  r   s    r"   r   zTTestGroupBy.test_groupby_apply_timegrouper_with_nat_scalar_returns.<locals>.<lambda>  s    #a&QVVAY bff r$   r   ro  rp  r&   rq  r   r   r  )r   rr  rs  r@   r   r
   rR   rO  r]  rV   r   )rY   r1   r0   rt  r!   r@   ru  r]   s           r"   6test_groupby_apply_timegrouper_with_nat_scalar_returnszBTestGroupBy.test_groupby_apply_timegrouper_with_nat_scalar_returns  s    
 /n""#LMVV&z!!&&|$VRVW;..&
 	sH-r$   c                    |}t        dd      }|j                  |      }|j                  dk(  sJ |j                  j	                  |j
                        j                  dk(  sJ d}t        j                  t        |      5  |j                  d       }d d d        t        t        d      g|d   j                  d	      }t        g d
g|t        g dd            }t        j                  |       y # 1 sw Y   cxY w)Nr   100YEr'   r   r   r}   c                     | d   dz  S )Nr   r    r   s    r"   r   zSTestGroupBy.test_groupby_apply_timegrouper_with_nat_apply_squeeze.<locals>.<lambda>  s    Qz]Q%6 r$   r   )rJ   r>   )$   rE   rE   r   r   )r   r   r   r   r   r   r   r  )r   r*   ngroups_selected_obj	_get_axisaxisnlevelsrV   r   r   r   r   r   rJ   r   rW   )	rY   r#   r!   r/   r0   r   rt  ru  r]   s	            r"   5test_groupby_apply_timegrouper_with_nat_apply_squeezezATestGroupBy.test_groupby_apply_timegrouper_with_nat_apply_squeeze  s     , &w/ZZ_ zzQ))"''2::a??? H''SA 	8((67C	8 Y|,-RZ5E5EFS/
;

 	c8,	8 	8s   C88Dc                 :   t        j                  d       |}|d   j                  d d      }|d   j                  d      }t        j                  ||       |dg   j                  d d      }|dg   j                  d      }t        j
                  ||       y )Nnumbar   c                 ,    t        j                  |       S r   rR   nanmeanvaluesrB   s     r"   r   zITestGroupBy.test_groupby_agg_numba_timegrouper_with_nat.<locals>.<lambda>      "**V"4 r$   )enginemeanc                 ,    t        j                  |       S r   r  r  s     r"   r   zITestGroupBy.test_groupby_agg_numba_timegrouper_with_nat.<locals>.<lambda>  r  r$   )r   importorskip	aggregaterV   r   rW   )rY   r1   r0   r   r]   	result_dfexpected_dfs          r"   +test_groupby_agg_numba_timegrouper_with_natz7TestGroupBy.test_groupby_agg_numba_timegrouper_with_nat  s     	G$ /J))4W * 
 j>++F3
vx0
|$..4W / 
	 *&008
i5r$   N)$__name__
__module____qualname__r   markxfailr   rb   parametrizerr   r   r   r   r   r   r   r   r  r  r  r#  r)  r.  r3  r@  rG  rJ  rV  r`  rf  rl  rw  rz  r  
single_cpur  r~  r$   r"   r3   r3   M   s    [[)+4HI45 J45l [[]T5M:  ; @s4j [[V%@A82 B82t@8D
*
(?4*=0~<01d;0z611)-1 GD1&0(1.".(-8 [[6 6r$   r3   )__doc__r   r   numpyrR   r   rD  pandas._configr   pandasr   r   r   r   r	   r
   r   r   r   pandas._testing_testingrV   pandas.core.groupby.grouperr   pandas.core.groupby.opsr   fixturer#   r1   r3   r~  r$   r"   <module>r     sv   
    - 	 	 	  / .  ,  ,{6 {6r$   