
    d&                     r    d dl Zd dlZd dlZd dlmZmZmZ d dlm	Z
  G d d          Z G d d          ZdS )    N)	DataFrame
MultiIndexSeriesc                       e 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                            dddg          d             Zd Zd ZdS )TestMultiLevelc                 2   |}|                     d                                          }|                    |j        d          }|                     d                              t
          j                  }t          j        ||           |d                             |j        d          }|d                              d                              t
          j                  }t          j        ||d           |j	                             dd                                          }|                    |j        d          }|                     d                              t
          j                  j	        }t          j        ||           d S )	Nmonth   levelAFcheck_namesaxis)columnsr   )
groupbysumreindexindex	transformnptmassert_frame_equalassert_series_equalT)self/multiindex_year_month_day_dataframe_random_dataymd
month_sumsresultexpecteds         X/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/tests/test_multilevel.pytest_reindex_levelz!TestMultiLevel.test_reindex_level   sT   =[[))--//
##CIQ#77;;W;--77??
fh/// C((!(<<s8##'#22<<RVDD
vxUCCCC U]]7]337799
##CIQ#??;;W;--77??A
fh/////    c                 p    |}|j         ddg         }|j        ddg         }t          j        ||           d S )Nr      fooonebarr*   )iloclocr   r   )r    multiindex_dataframe_random_dataframer"   	reindexeds        r#   test_reindexzTestMultiLevel.test_reindex#   sA    0:q!f%I~~>?	
i22222r%   c                 f   |}|j         d d d         }|                    |          }|j         |u sJ |j        |         }|j                             |          sJ |j        }|                    |          }|j        |u sJ |j        d d |f         }|j                            |          sJ d S )N
   r   )r   r   r.   equalsr   r   )r   r   r   	new_indexchunkymdTs         r#   test_reindex_preserve_levelsz+TestMultiLevel.test_reindex_preserve_levels*   s     >IdddO	I&&{i''''	"{!!),,,,,uY//}	))))I&}##I.......r%   c                 6   |}|d         }|j                             d          }|                    |d          }|                    d           }|                    d           }|                    |j                   }t          j        ||d           d S )Nr   r   F)
group_keysc                     | dz  S N    xs    r#   <lambda>z7TestMultiLevel.test_groupby_transform.<locals>.<lambda>E   s
    !a% r%   c                     | dz  S r>   r@   rA   s    r#   rC   z7TestMultiLevel.test_groupby_transform.<locals>.<lambda>F   s
    q1u r%   r   )r   get_level_valuesr   applyr   r   r   r   )	r   r/   r0   sgroupergroupedappliedr"   r!   s	            r#   test_groupby_transformz%TestMultiLevel.test_groupby_transform=   s    0#J'**1--))G)66--00$$__5500
vxUCCCCCCr%   c                     t          dgdgdggdgdgdggg d          }t          t          j                            d          gg d|	          }|                    d
           d S )Nr)   r,   bazr   )r*   twothreelevelscodesnames   abcd)r   r   rO   r   )r   r   r   randomrandr   )r   midxdfs      r#   test_groupby_cornerz"TestMultiLevel.test_groupby_cornerJ   s    GeWug.3aS/)))
 
 

 	q))*4H4H4HPTUUU



!!!!!r%   c                 b   t          j        g d          }t          g dg dg|          }|                    d          |j                            d                    }|                    dd	          }|                                }|j        d
dgk                                    sJ d S )N))f1s1)r`   s2)f2ra   )rc   rb   )f3ra   )rd   rb   )r
   r?   r'   rT         )      	   r4         r5   r
   r   c                     | d         dv S )Nr   )rc   rd   r@   )us    r#   rC   z:TestMultiLevel.test_groupby_level_no_obs.<locals>.<lambda>a   s    adl6J r%   r   r   r   rc   rd   )	r   from_tuplesr   r.   r   mapr   r   all)r   r\   r]   df1rI   r!   s         r#   test_groupby_level_no_obsz(TestMultiLevel.test_groupby_level_no_obsT   s    %  	
 	
 ***,A,A,ABDQQQff!fnnRZ^^,J,JKKL++1A+..4,.335555555r%   c                     |}|d d         j         }|d         |d<   t          |j        t                    sJ |d         |d         k                                    sJ d S )Nre   )  r
   rg   )ru   r
   r4   )r   
isinstancer   r   rq   )r   r   r   r]   s       r#   .test_setitem_with_expansion_multiindex_columnsz=TestMultiLevel.test_setitem_with_expansion_multiindex_columnsg   sh     >!WYZ.;"*j11111;2j>1668888888r%   c                 V   t          g dt          j        g d                    }t          g dt          j        g d                    }||z
  }|j                            |j                  }|                    |          |                    |          z
  }t          j        ||           |d d d         |d d d         z
  }|j                            |j                  }|                    |          |                    |          z
  }t          j        ||           d S )N)r
   r?   r'   ))r   r
   )r   r?   Br'   )datar   )rT   re   rf   ))Zr
   )r|   r?   ry   )r   r   ro   r   unionr   r   r   )r   rB   yres	exp_indexexps         r#   test_alignmentzTestMultiLevel.test_alignmentq   s'   *"89W9W9W"X"X
 
 
 *"89W9W9W"X"X
 
 
 !eGMM!'**	ii	""QYYy%9%99
sC((( "g$$B$GMM!'**	ii	""QYYy%9%99
sC(((((r%   c                 ,   |}|                     ddg                                          }|j                            d          }|j                            d          }|                     ||g                                          }t	          j        ||d           |j        j        |j        j        d d         k    sJ |                     |j        j        d d                                                   }t	          j        ||           d S )Nr   r
   r   Fr   r?   )r   meanr   rE   r   r   rS   )r   r   r   r!   k1k2r"   result2s           r#   test_groupby_multilevelz&TestMultiLevel.test_groupby_multilevel   s    =Aq6**//11Y''**Y''**;;Bx((--// 	fhEBBBB|!SY_RaR%88888++CIOBQB$7+88==??
fg.....r%   c                     t          j        g d          }t          t          j                            dd          ||          }|                    d          |d<   |                                }d S )N)r(   )r)   rN   r+   )r,   rN   rT   )r   r   r
   )Totals )r   ro   r   r   rZ   randnr   _consolidate)r   r   r]   s      r#   test_multilevel_consolidatez*TestMultiLevel.test_multilevel_consolidate   sj    &LLL
 
 ryq!,,E5III66!99<__r%   c                    t          g dddggg dg dg          }t          t          j                            d          |          }t          t          j                            dd	          |          }|d
         }|j        d
         }|d d         }|j                            d          |_        t          j
        ||           t          j
        ||           t          j        t          d          5  |d          d d d            n# 1 swxY w Y   |j        d
         }|                    d
          }|d d         }|j                            d          |_        t          j        ||           t          j        ||           t          g dddggg dg dg          }t          t          j                            d          |          }t          t          j                            dd	          |          }|d         }|j        d         }|d d         }|j                            d          |_        t          j
        ||           t          j
        ||           |j        d         }|                    d          }|d d         }|j                            d          |_        t          j        ||           t          j        ||           d S )N)r)   r,   r   )r)   rM   r   )r)   quxr   r   r
   )r   r   r
   r
   r?   r?   )r   r
   r   r
   r   r
   )rQ   rR   rf   r   rT   r   r?   z^\(\('foo', 'bar', 0\), 2\)$)match)r   r?   )r)   r,   )r)   rM   )r)   r   r   )r   r   r   rZ   r   r   r.   r   	droplevelr   r   pytestraisesKeyErrorxsr   )r   r   seriesr0   r!   r   r"   s          r#   test_level_with_tuplesz%TestMultiLevel.test_level_with_tuples   s   MMMPQSTvV%%%'9'9'9:
 
 

 	**%888")//!Q//u===)**./"1":!11!44
vx000
w111]8+JKKK 	) 	)'((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) ,-((,--!9!11!44
fh///
gx000DDDq!fM%%%'9'9'9:
 
 

 	**%888")//!Q//u==='*^,"1":!11!44
vx000
w111>*((>**!9!11!44
fh///
gx00000s   >	DDDc                    |}|                     ddgd          }|j        g d         }t          j        ||           |j                             ddgdd          }t          j        ||j                   |j        ddg         }t          j        ||           |d         j        ddg         }t          j        ||d                    |j        j        d d ddgf         }t          j        ||j                   d S )	Nr)   r   r   r   )r   r
   r?   rg   rh   ri   r
   rn   r   )r   r-   r   r   r   r.   r   )r   r/   r0   r!   r"   s        r#   $test_reindex_level_partial_selectionz3TestMultiLevel.test_reindex_level_partial_selection   s    0u~Q77:0001
fh///%aqAA
fhj111E5>*
fh///s/
vx}555QQQ./
fhj11111r%   rY   rT   c                    g d}t          dgdgdg|gd          }||j        dk                                 |          }|                                j        }t          dgdgdggg g g gg d          }t          j        ||           d S )N)rV   rW   rX   r
   r?   r'   rU   rP   )r   rV   r   firstr   r   r   assert_index_equal)r   rY   r<   r]   gr!   r"   s          r#   +test_empty_frame_groupby_dtypes_consistencyz:TestMultiLevel.test_empty_frame_groupby_dtypes_consistency   s     %__
aSs!A3??@@rtqyM!!*--C!qc?2r2,ooo
 
 
 	fh/////r%   c                     g d}g d}t          j        |ddg          }t          ||          }|                    |j                                                  }t          |          dk    sJ d S )N))60080920061231r   20070331)r   20070630r   )demor   r   r   STK_IDRPT_Date)rS   r   r'   )r   ro   r   r   r   r   len)r   idx_tpdtidxrG   r!   s         r#   test_duplicate_groupby_issuesz,TestMultiLevel.test_duplicate_groupby_issues   s    
 
 
 .--$VHj3IJJJ2S!!!17##))++6{{ar%   c                     ddgg}ddt           j        fdg}t          |t          j        |                    }|j        j        j        }|j        j        j        }t          j	        ||           d S )NrB   r
   rV   rW   )rV   rX   g        r5   )
r   nanr   r   ro   dtypesrV   rW   r   r   )r   r{   r   r]   r"   r!   s         r#   test_subsets_multiindex_dtypez,TestMultiLevel.test_subsets_multiindex_dtype   sl    azbf%7tZ%;G%D%DEEE9;=
vx00000r%   N)__name__
__module____qualname__r$   r2   r:   rK   r^   rs   rw   r   r   r   r   r   r   markparametrizer   r   r   r@   r%   r#   r   r      s       0 0 0*3 3 3/ / /&D D D" " "6 6 6&9 9 9) ) )(/ / /"  .1 .1 .1`2 2 2& [S1c(++0 0 ,+0     1 1 1 1 1r%   r   c                       e Zd ZdZd ZdS )
TestSortedz+everything you wanted to test about sortingc                    t          g dg dgg dg dg          }t          dt          t          |                    i|d          }|j        j        du sJ |                                }|j        j        d	u sJ t          dg d
it          j        g d          d          }|j        t          j
        ddddf         d d f         }t          j        ||           d S )N)r   rz   C)rX   rW   rV   )r   r
   r?   r   r
   r?   )r   r?   r
   r
   r   r?   colint64)r   dtypeFT)r
   rT   re   r?   ))rz   rV   )rz   rX   )r   rV   )r   rW   rz   r   rV   rX   )r   r   ranger   r   is_monotonic_increasing
sort_indexro   r.   pd
IndexSlicer   r   )r   r   r]   sortedr"   r!   s         r#   test_sort_non_lexsortedz"TestSorted.test_sort_non_lexsorted  s    __ooo.1C1C1CEWEWEW0X
 
 uSXX/s'JJJx/58888|3t;;;;LLL!(@@@  
 
 
 BM#c'3s7*:;QQQ>?
fh/////r%   N)r   r   r   __doc__r   r@   r%   r#   r   r     s)        550 0 0 0 0r%   r   )numpyr   r   pandasr   r   r   r   pandas._testing_testingr   r   r   r@   r%   r#   <module>r      s                     
      x1 x1 x1 x1 x1 x1 x1 x1v0 0 0 0 0 0 0 0 0 0r%   