
    bMh                         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j        d             Zej        d	             Z G d
 d          ZdS )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    e/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/groupby/test_timegrouper.pyframe_for_truncated_bingrouperr#      s     
+++$1b!,,$1b!,,$Ar1--$Ar1--$1b!,,
	
 
	

 
B I    c                     | }t          dd          }|                    |          }t          |j        j                  t          |j        j                  k    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   s\     
(B
f4
(
(
(C	CB r{'((C0J,K,KKKKKIr$   c                      e Zd Zej                             e            d          d             Zej                            dddg          d             Z	d Z
e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        j"        d"             Z#d#S )$TestGroupByzTODO(infer_string))reasonc                    t          d                                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          }|                    d          }||fD ]}|                    dg          }t          ddddd|j        j                  }t          ddd|          }|                    dt          i          }d|j
        d<   d|j
        d<   d|j
        d <   t          j        g d!d"#          |j
        g d$df<   |                    d                                          }t          j        ||           |                                }|                    t'          d%                                                    }t          j        ||           |                    t'          d%                                                    }	t          j        |	|           d S )&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0T2q"a00T2q"a00T1aQ// 
 
  #..*.==- 	5 	5Bvh''B  X]  G !++  H
  '899H"0HM$",HM$#(HM% +-8JJJg+N+N+NHM***a-(kk$''++--G!'8444I''T(:(:(:;;??AAG!'8444jjd!3!3!34488::G!'84444=	5 	5r$   should_sortTFc                    t          d                                d                                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|                    dd          }|                    dd          }|                    t          d                    }|j        sJ t          |j	        t                    sJ |j        }t          |t                    sJ t          |          dk    sJ d S )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   sl   
 '--//6<<>>...T1aQ//T1aQ//T2q"a00T2q"a00T2q"a00T2q"a00	 
 
   	@:??B\\&u\--JJwE***++|!*j11111&$'''''6{{ar$   c                    t          d                                d                                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                              d          }|                    dd          }||fD ]}t          d                                g dt          ddddd          t          ddddd          t          ddddd          gd                              ddg          }d}|                    t          d          dg                              d          }t          j	        ||           t          d                                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                              ddg          }|                    t          d           dg                              d          }t          j	        ||           t          d                                d                                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                              d          }|                    dd          }||fD ]}t          d!                                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                              ddg          }|                    t          d#          dg                              d          }t          j	        ||           |                    t          d$          dg                              d          }t          d                                g dt          dd	ddd          t          dd	ddd          t          dd	ddd          gd                              ddg          }t          j	        ||           |
                                }|                    t          d$d%          dg                              d          }t          j	        ||           t          j        t          d&'          5  |                    t          d$d(%          dg                                           d d d            n# 1 swxY w Y   |                    d          }|                    t          d$d)          dg                              d          }t          j	        ||           |                    t          d$d)          dg                              d          }t          j	        ||           t          j        t          d*'          5  |                    t          d$d()          dg                                           d d d            n# 1 swxY w Y   |                                }|j        t#          j        d          z   |d<   |                    t          d$d%          dg                              d          }t          d                                g dt          dd+d,dd          t          dd+d,dd          t          dd+d,dd          gd                              ddg          }t          j	        ||           d-}t          j        t          |'          5  |                    t          d$dd.          dg                                           d d d            n# 1 swxY w Y   t          dggdgt'          t          dd	ddd          gt#          j                    d/          0          }|                    t          d$                                        d          }t          j	        ||           |                    t          d$          g                              d          }t          j	        ||           |j                            d          |_        |j        j        t#          j                    k    sJ |                    t          d$d%                                        d          }t          j	        ||           |                    t          d$d%          g                              d          }t          j	        ||           d S )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   s}     +1133?EEGG444T1aQ//T1aQ//T2q"a00T2q"a00T2q"a00T2q"a00T2q"a00T2q"a00		 
 
  )F

! 	$  ++zU+KK		* 	4 	4B ,2244 + r2q!44 r2q!44 r2q!44 
 
 i)**  6CZZd!3!3!3W =>>BBPTBUUF!&(333 17799 - q!Q22 q!Q22 q!Q22 q!Q22		 	  i)**  ZZe!4!4!4g >??CCQUCVVF!&(3333+1133?EEGG444T2q"a00T2q"a00T2q"a00T2q"a00T2q"a00T2q"a00T2q"a00T2q"a00		 
 
  )F

! 	$  ++zU+KK		* h	4 h	4B 5;;== 0 0 0 r1a33 r1a33 r1a33 r1a33 r1a33
 
  i)**  ZZd!3!3!3W =>>BBPTBUUF!&(333ZZe!4!4!4g >??CCQUCVVF ,2244 + r2q!44 r2q!44 r2q!44 
 
 i)**  !&(333 !!BZZe!@!@!@' JKKOO! P  F !&(333x/TUUU L L

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

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

%V6BBBGL #%%%               !##dBAq1129I9K9KRX    H ZZU 3 3 34488d8KKF!&(333ZZe!4!4!4 566:::MMF!&(333%^11!44HN>&'*:*<*<<<<<ZZU ? ? ?@@DDRVDWWF!&(333ZZe!@!@!@ ABBFF! G  F !&(3333Qh	4 h	4s6   /9W44W8	;W8	9\\	\	.:a44a8	;a8	r)   )DMEru   zQE-APRc                    t          t          j        g d          g dg dg dd                              d          }|                    d          d                             |                              d	
                                                              ddg          	                                
                    d          }d|_        |	                                                    t          |          dg          d                                         }t          j        ||           |                    t          |          dg          d                                         }t          j        ||           d S )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FFA! !#
 #
F )F

G 	L JJy!!,/Xd^^S1SVXX^VY/00Z\\VG__ 	 % MMOO##W$%7%7%7$CDD\RVVXX 	 	w111**g4000)<==lKOOQQ
w11111r$   c                    t          d                                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          }|                    d          }|j        g d         |j        ddg         |j        dg         g}g d}||fD ]u}|                    t          dd                    }t          ||          D ]>\  }}t          |          }	|	                    |	          }
t          j        |
|           ?v|j        dg         |j        dg         |j        dg         g}g d}||fD ]|}|                    dt          dd          g          }t          ||          D ]C\  \  }}}t          |          }	|	                    ||	f          }
t          j        |
|           D}|                    d          }|                    d          }|j        g d         |j        ddg         |j        dg         g}||fD ]t}|                    t          d                    }t          ||          D ]>\  }}t          |          }	|	                    |	          }
t          j        |
|           ?ud S )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  sR     5;;==///T1aQ//T1aQ//T2q"a00T2q"a00T2q"a00T1aQ// 
 
 #..*.== YYY'aV$aS!

 =<<- 	8 	8Bjjd!?!?!?@@G"7M:: 8 88q\\ **2..%fh77778 aS!aS!aS!

 XWW- 	8 	8Bjj'7&+I+I+I!JKKG$'$>$> 8 8 Aq\\ **Ar733%fh77778 "++F33"..*.== YYY'aV$aS!
 - 	8 	8Bjjd!3!3!344G"7M:: 8 88q\\ **2..%fh77778	8 	8r$   c                    t          ddgddgd          }|                                }t          j        |d                   |d<   d }d}t	          j        t          |	          5  |                    t          d
                    	                    |          }d d d            n# 1 swxY w Y   d}t	          j        t          |	          5  |                    t          dd                    	                    |          }d d d            n# 1 swxY w Y   t	          j
        |                    d          |                    d                     d S )N
10/10/2000
11/10/2000r   r   r   valuer   c                 T    t          | d                                         gd          S )Nr   )rU   )r
   rU   xs    r"   sumfunc_serieszMTestGroupBy.test_timegrouper_apply_return_type_series.<locals>.sumfunc_series  s#    1W:>>++,h7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PQQ		uV}55f	8 	8 	8 H'SAAA 	M 	Mzz'f"5"5"566<<^LLH	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	MG'SAAA 	Y 	Y]]7&#A#A#ABBHHXXF	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y
D))8+?+?T+?+J+J	
 	
 	
 	
 	
s$   (7B++B/2B/8DDDc                    t          ddgddgd          }|                                }t          j        |d                   |d<   d }d}t	          j        t          |	          5  |                    t          d
                    	                    |          }d d d            n# 1 swxY w Y   t	          j        t          |	          5  |                    t          dd                    	                    |          }d d d            n# 1 swxY w Y   t	          j
        |                    d          |                    d                     d S )Nr   r   r   r   r   r   c                 4    | j                                         S N)r   rU   r   s    r"   sumfunc_valuezKTestGroupBy.test_timegrouper_apply_return_type_value.<locals>.sumfunc_value  s    7;;== 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PQQ		uV}55f	! 	! 	! H'SAAA 	L 	Lzz'f"5"5"566<<]KKH	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L'SAAA 	X 	X]]7&#A#A#ABBHHWWF	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X
D))8+?+?T+?+J+J	
 	
 	
 	
 	
s$   (7B++B/2B/8DDDc                 ^   d}t          dd|          }t          t          j        |          t          j        |          d|          }|                    d           }|j        }t          t          t          |	                                                    t                    sJ d S )Ni  z2012/1/15min)startr)   periods)highlowrA   c                 B    t          | j        | j        | j                  S r   )r   yearmonthdayr   s    r"   <lambda>z?TestGroupBy.test_groupby_groups_datetimeindex.<locals>.<lambda>
  s    x'G'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  s    zHHHYw''	'0B0BCC3
 
 
 **GGHH $tFKKMM2233X>>>>>>>r$   c                    t          ddd          }t          g dg dd|          }|                    d	          j        }g d
}d |D             }t	          j        ||           |                    d	          }|D ]}|                    |          }|j        |df         |j        |df         gg}t          |gdd|j	                  }	t          |t          d          |	          }t	          j        ||           d S )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-01c                 N    i | ]"}t          |          t          |gd           #S )r   r>   )r   r   ).0r   s     r"   
<dictcomp>zBTestGroupBy.test_groupby_groups_datetimeindex2.<locals>.<dictcomp>  s<     
 
 
DHIdOO]D6???
 
 
r$   r   r   r   )r>   r)   rJ   ABr   )r   r   r*   ro   rV   assert_dict_equalr   locr   rJ   listrW   )
rY   rB   r!   r   datesr]   r   r   dataexpected_indexs
             r"   "test_groupby_groups_datetimeindex2z.TestGroupBy.test_groupby_groups_datetimeindex2  sA   <@@@___???CC5QQQ&))0VVV
 
LQ
 
 
 	VX...**6*** 	4 	4D&&t,,FVD#I&tSy(9:;D*V#U[  N !tDzzPPPH!&(3333	4 	4r$   c                 (   g d}t          g d|t          j        dd          ddgdz  d	          }|d
                             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          }|                    d
dg          	                                }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          }|                    d !          	                                }t          j        ||           d S )"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    	!8U8U8U 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%  s   
 
 
 777!)AW555a&1*	 
 
 J--.U.UVV:    
 
 
 #sag666((H)=>>)))5G5G5GHHx(
 
 
 Z1226688
fh/// U|444y'222>P>P>PQQ
 
 

  QQQ
 
 
  yyIII66x(
 
 
 !$$((**
fh/////r$   c                    t          dt          j        d          fdt          j        d          fgddg          }|                    d                                          }|d         d         t          d          k    sJ d S )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  s    |,,-2=3N3N/OP&M
 
 
 C&&((f~a Il$;$;;;;;;;r$   c           
      
   t          t          d          g dg dd          }|                    dd          j                            d           }t          t          d	d
          t          dd
          t          dd          t          dd
          t          dd          gdt                    }t          j	        ||           d
}|                    d          j        
                    |          }t          j        |          j                            |          }t          g dg dd          }t          j        |          j                            |          }t          j	        ||           d S )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                 d    t          j        |           j                            | j                  S r   )r   r   r   tz_localizer>   r   s    r"   r   z9TestGroupBy.test_groupby_multi_timezone.<locals>.<lambda>  s#    bnQ''*66qv>> 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  s   q     
 
( DU338>>>>
 
 49JKKK49JKKK49NOOO49JKKK49KLLL 

 

 

 	vx000ZZ%%*44R88

++.::2>>QQQ))
 
 


 >*--0<<R@@
vx00000r$   c                    g d}t          g dd |D             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          }|                    ddg          	                                }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          }|                    d           	                                }t          j        ||           d S )!Nr   r   c                 :    g | ]}t          j        |d           S )hrK   )r   Period)r   r   s     r"   
<listcomp>z;TestGroupBy.test_groupby_groups_periods.<locals>.<listcomp>  s'    AAAa29QS111AAAr$   rE   rH   rI   r   r   r   )r   periodr   r   r   r$  r'  r   r   r   r   r   r  r  r  r   r   r  rK   r  rA   r  r  r  r   r   )r   rR   r   r   PeriodIndexr   r	   r	  r*   rU   rV   rW   r
  s	            r"   test_groupby_groups_periodsz'TestGroupBy.test_groupby_groups_periods  s   
 
 
 777AA5AAA)AW555a&1*	 
 
 >   
 
 
 #sag666((H)=>>)))5G5G5GHHx(
 
 
 Xw/004466
fh/// ~e#...y'222>P>P>PQQ
 
 

 .QQQ
 
 
  yyIII66x(
 
 
 !$$((**
fh/////r$   c                    t          ddg          }|d                             d          |d<   t          |d         j        j        t
          j                  sJ |                    d                                          }|d         j        }t          |j        t
          j                  sJ |d                             d                                          }|j        }t          |j        t
          j                  sJ d S )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L1X&&1"Q%+*BM:::::!$$**,,&+r}55555AQ''--//&+r}5555555r$   c                 p   t          t          d          t          j        d          d          }|                    d          d                             d                               d          }|                    d          d                                         }t          j	        ||           d S )N20130101r   r   r   c                 *    |                                  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   r3  rV   r   )rY   r!   r]   r   s       r"   test_groupby_max_datetime64z'TestGroupBy.test_groupby_max_datetime64  s     Yz221FFGG::c??3'--.?.?@@GGPPC%))++
vx00000r$   c                 0   t          t          d          t          d          gdz  d          }|                    d          d                             d          }t          t          d          gdz  d          }t          j        ||           d S )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  s     U1XXY{-C-C,Dq,HIIJJC%//669[112Q6SAAA
vx00000r$   c           	         t          t          j                            d                              ddd          t          dddd	          d
          }|                    d                                          d         }|                    d          d                                         }t          j	        ||           d S )Nr   r   r   <   )sizez01/01/2000 00:00sUTC)r   r)   r   )factortimer?  r@  )
r   rR   randomdefault_rngintegersr   r*   r3  rV   r   )rY   r!   df1df2s       r"   $test_groupby_with_timezone_selectionz0TestGroupBy.test_groupby_with_timezone_selection  s     )//22;;Aqr;JJ"#5rPUVVV 
 
 jj""&&((0jj""6*..00
sC(((((r$   c                 Z   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 d S )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TX(>(>'?@@AA#wqz DH,,,,YYY'((,tx((3#wqz DH,,,,,,r$   c                     t          g ddz  t          ddd          d          }|                    d          j                                        }t          g d	t          g dd
          d          }t          j        ||           d S )NrH  r   rI  rE   r6  )r   r)   )r   r   r   )r   r   r   r   r   r  )	r   r   r*   r   countr
   r   rV   r   r8  s       r"   test_datetime_countzTestGroupBy.test_datetime_count  s    ))a-*UAE*R*R*RSS
 
 C&,,..)))5+E+E+EGTTT
vx0000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                                                 }|                    d
          }|                    d
          }t          j
        |                                |                                           t          j
        |                                |                                           t          j
        |                                |                                           t          j
        |                                |                                           d S )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   r3  r6  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  sy     F&&&F F1%%%1%%%1%%%F 
 
$ ^GJ//
))++,w//nnW--
koo//1A1A1C1CDDD
koo//1A1A1C1CDDD
k//11<3E3E3G3GHHH
k..00,2C2C2E2EFFFFFr$   c                    t          t          d          t          j        t          d          gg dd          }t	          dd          }|                    |          d                                         }||j                                                                     |          d                                         }|j	        
                    d           |_	        t          j        ||           d S )	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4F344
 ( 	
 	
 f3///g&&v.6688	))++,44W==fEMMOO!22488
vx00000r$   c                 p   g dt          g dd          g dd}t          |                              d          }t          d	          }|                    |          }|                                }|                    |g          }|                                }t          j        ||           d S )
N)shanghaibeijingrh  )z2017-08-09 13:32:23z2017-08-11 23:23:15z2017-08-11 22:23:15zdatetime64[ns]rI   rH  )locationr@  r   r@  r   rK   )r
   r   rN   r   r*   rO  rV   rW   )rY   
data_framere  r   r   r]   s         r"   !test_scalar_call_versus_list_callz-TestGroupBy.test_scalar_call_versus_list_callQ  s     <;;UUU&   YY
 

 z**44V<<
s###$$W--$$gY//==??
fh/////r$   c           
         d}t          j        d|dd          }t          t          |          |          }|                    |j        j                                                  }t          t          |          t          t          d|dz             |j	                            }t          j        ||           d S )	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AEEGG'NN%a1(=(=EJ"O"O"O
 
 
 	vx00000r$   c                 <   |}|d                              d           }|j        }|d         j        j        }t	          dddd|          }t          j        |dgt          |          z  g          }t          g d	|d
          }t          j
        ||           d S )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VV_ 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""#<#<==V&z!&|$VRVWWW#S5'CHH*<$=>>///r
KKK
sH-----r$   c           	         |}|d                              d           }|j        }|d         j        j        }t	          dddd|          }t          dt          j        t          j        t          j        t          j        t          j        d	g|                    d           d
          }t          j
        ||           d S )Nr   c                 R    t          |           r| j        d         nt          j        S )Nr   )r+   rQ   rR   rU  r   s    r"   r   zTTestGroupBy.test_groupby_apply_timegrouper_with_nat_scalar_returns.<locals>.<lambda>  s    #a&&-LQVAYYbf r$   r   ru  rv  r&   rw  r   r   r  )r   rx  ry  r@   r   r
   rR   rU  rc  rV   r   )rY   r1   r0   rz  r!   r@   r{  r]   s           r"   6test_groupby_apply_timegrouper_with_nat_scalar_returnszBTestGroupBy.test_groupby_apply_timegrouper_with_nat_scalar_returns  s    
 /n""#L#LMMV&z!&|$VRVWWW;..&&
 
 
 	sH-----r$   c                 &   |}t          dd          }|                    |          }|j        dk    sJ |j                            |j                  j        dk    sJ d}t          j        t          |          5  |
                    d           }d d d            n# 1 swxY w Y   t          t          d          g|d         j        d	          }t          g d
g|t          g dd                    }t          j        ||           d S )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   rz  r{  r]   s	            r"   5test_groupby_apply_timegrouper_with_nat_apply_squeezezATestGroupBy.test_groupby_apply_timegrouper_with_nat_apply_squeeze  sf    , &w///ZZ__ zQ))"'22:a???? H'SAAA 	8 	8((6677C	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 Y|,,-RZ5EFSSS///
;;;
 
 

 	c8,,,,,s   =B  B$'B$c                 n   t          j        d           |}|d                             d d          }|d                             d          }t          j        ||           |dg                             d d          }|dg                             d          }t          j        ||           d S )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"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))44W * 
 
 j>++F33
vx000
|$..44W / 
 
	 *&0088
i55555r$   N)$__name__
__module____qualname__r   markxfailr   rb   parametrizerr   r   r   r   r   r   r   r   r  r  r!  r)  r/  r4  r9  rF  rM  rP  r\  rf  rl  rr  r}  r  r  
single_cpur  r  r$   r"   r3   r3   M   sE        [))++4HII45 45 JI45l []T5M::    ;: @s4 s4 s4j [V%@%@%@AA82 82 BA82t@8 @8 @8D
 
 
*
 
 
(? ? ?4 4 4*=0 =0 =0~< < <01 01 01d;0 ;0 ;0z6 6 61 1 11 1 1) ) )- - -1 1 1 G  G  GD1 1 1&0 0 0(1 1 1. . .". . .(- - -8 [6 6 6 6 6r$   r3   )__doc__r   r   numpyrR   r   rJ  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     s          
       - - - - - -    	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	       / / / / / / . . . . . .   ,   ,{6 {6 {6 {6 {6 {6 {6 {6 {6 {6r$   