
    bi                    N    d dl mZ d dlmZ d dlmZ d dlmZmZm	Z	 d Z
d Zd Zy)	    )annotations)defaultdict)methods)categorical_dtypecategorical_dtype_dispatchis_categorical_dtypec                   | j                         } |j                         D ]]  \  }}t        | |         r"| |   j                  j	                  |      | |<   6t        | |   |d      }| |   j                  |      | |<   _ |t        | j                        r| j                  j	                  |      }n4t        | j                  |d      }| j                  j                  |      }| j                  j                  |_        || _        | S )zCategorize a dataframe with given categories

    df: DataFrame
    categories: dict mapping column name to iterable of categories
    F)meta
categoriesordered)dtype)	copyitemsr   catset_categoriesr   astypeindexname)dfr   r   colvals	cat_dtypeinds          U/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/dask/dataframe/categorical.py_categorize_blockr      s     
B%%' 0	T3(gkk006BsG)r#w4QVWIgnnY/BsG0 )(())%0C)XX%I ((//	/2C88==I    c                   i }|D ]\  }| |   }t        |      r)|j                  |j                  j                        ||<   <|j	                         j                         ||<   ^ |rWt        | j                        r|| j                  j                  fS || j                  j	                         j                         fS |d fS )N)r   _constructorr   r   dropnadrop_duplicatesr   )r   columnsr   resr   xs         r   _get_categoriesr$   '   s    
C 4sG"~~aee&6&67CHxxz113CH4 )++++BHHOO%557779r   c           	        t        t              }g }| D ]E  }|d   j                         D ]  \  }}||   j                  |        |j                  |d          G |j                         D ci c]+  \  }}|t	        j
                  |d      j                         - }}}|d   |d fS ||d   j                  |dd        j                         fS c c}}w )Nr      T)ignore_index)r   listr   appendr   concatr    )partsr"   res_indpkvs         r   _get_categories_aggr0   6   s    
d
CG aDJJL 	DAqFMM!	qt IIKAq 	
7>>!$/??AAC  qzDy
!!'!"+.>>@@@s   /0CN)
__future__r   collectionsr   dask.dataframer   dask.dataframe.dispatchr   r   r   r   r$   r0    r   r   <module>r6      s(    " # " 4Ar   