1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
U
­ý°ddã@spddlZddlZddlmmZddlZddlm    Z    m
Z
m Z m Z ddl mZe ¡dd„ƒZGdd„dƒZdS)éN)Ú    DataFrameÚIndexÚ
MultiIndexÚSeriescs&G‡fdd„dtƒ‰ˆddddgiƒS)NcseZdZe‡fdd„ƒZdS)z2gpd_style_subclass_df.<locals>.SubclassedDataFramecsˆS©N©©Úself©ÚSubclassedDataFramerúWd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/tests/frame/test_subclass.pyÚ _constructorsz?gpd_style_subclass_df.<locals>.SubclassedDataFrame._constructorN)Ú__name__Ú
__module__Ú __qualname__Úpropertyr rr
rr r sr Úaééé)rrrr
r Úgpd_style_subclass_dfsrc@s$eZdZdd„Zdd„Zdd„Zdd„Zd    d
„Zd d „Zd d„Z    dd„Z
dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zej d+d,d-g¡d.d/„ƒZd0d1„Zd2d3„Zejd4d5„ƒZ d6d7„Z!d8d9„Z"d:d;„Z#d<d=„Z$d>d?„Z%d@dA„Z&dBdC„Z'dDS)EÚTestDataFrameSubclassingcsG‡fdd„dtƒ‰G‡‡fdd„dtƒ‰tdƒtdƒdœ}ˆ|ƒ}t|ˆƒsRt‚|j}t|ˆƒsft‚| ¡dksvt‚|dd    …}t|ˆƒst‚| ¡dks t‚t     d
d g¡}ˆd dgd dgg|d}t|dˆƒsØt‚t     ddg¡}ˆd dgd dgg|d}t|dˆƒst‚dS)Ncs$eZdZe‡fdd„ƒZdd„ZdS)zQTestDataFrameSubclassing.test_frame_subclassing_and_slicing.<locals>.CustomSeriescsˆSrrr©Ú CustomSeriesrr r  sz^TestDataFrameSubclassing.test_frame_subclassing_and_slicing.<locals>.CustomSeries._constructorcSsdS©NÚOKrrrrr Úcustom_series_function$szhTestDataFrameSubclassing.test_frame_subclassing_and_slicing.<locals>.CustomSeries.custom_series_functionN)rrrrr rrrrr rsrcsBeZdZdZddœ‡fdd„ Ze‡fdd„ƒZ”Zdd    „Z‡Z    S)
zTTestDataFrameSubclassing.test_frame_subclassing_and_slicing.<locals>.CustomDataFramez‚
            Subclasses pandas DF, fills DF with simulation results, adds some
            custom plotting functions.
            N)Úreturncstƒj||ŽdSr)ÚsuperÚ__init__)r    ÚargsÚkw©Ú    __class__rr r-sz]TestDataFrameSubclassing.test_frame_subclassing_and_slicing.<locals>.CustomDataFrame.__init__csˆSrrr)ÚCustomDataFramerr r 0szaTestDataFrameSubclassing.test_frame_subclassing_and_slicing.<locals>.CustomDataFrame._constructorcSsdSrrrrrr Úcustom_frame_function6szjTestDataFrameSubclassing.test_frame_subclassing_and_slicing.<locals>.CustomDataFrame.custom_frame_function)
rrrÚ__doc__rrr Z_constructor_slicedr%Ú __classcell__r©r$rr"r r$'s r$é
)Úcol1Zcol2rré)ÚAr,)r,ÚBrrr©Úcolumnsr,)r,Ú)r-r0)
rrÚrangeÚ
isinstanceÚAssertionErrorr*rr%rÚ from_tuples)r    ÚdataZcdfZ
cdf_seriesZcdf_rowsZmcolZ    cdf_multiZ
cdf_multi2rr(r Ú"test_frame_subclassing_and_slicings" z;TestDataFrameSubclassing.test_frame_subclassing_and_slicingcCsètjdddgdddgdœdddgd}d    |_|jd    ks:t‚|d
gjd    ksNt‚|jddgdd…fjd    ksnt‚|jd dgdd…fjd    ksŽt‚|jd d…dd…fjd    ks®t‚t |¡}t ||¡|j|jksÔt‚|j|jksät‚dS) Nrrr)ÚXÚYrÚbÚc©ÚindexZXXXr7r)    Útmr Ztestattrr3ÚlocÚilocZround_trip_pickleÚassert_frame_equalÚ    _metadata)r    ÚdfZ    unpickledrrr Útest_dataframe_metadataRsÿ   
 z0TestDataFrameSubclassing.test_dataframe_metadatacCsêtjdddgdddgddd    gd
œd d d gd}|jdd…df}tjdddgtdƒdd}t ||¡t|tjƒsvt‚|jdd…df}tjdddgtdƒdd}t ||¡t|tjƒs¾t‚|jdd…df}tjddd    gtdƒdd}t ||¡t|tjƒst‚|jd dd…f}tjdddgtdƒd d}t ||¡t|tjƒsRt‚|jddd…f}tjdddgtdƒd d}t ||¡t|tjƒsœt‚|jd dd…f}tjddd    gtdƒd d}t ||¡t|tjƒsæt‚dS)Nrrrér+éééé    )r7r8ÚZrr9r:r;r7Úabc©r<Únamer8rIZXYZ)    r=r r>ÚSubclassedSeriesÚlistÚassert_series_equalr2r3r?©r    rBÚresÚexprrr Útest_indexing_slicedfs8ÿ      z-TestDataFrameSubclassing.test_indexing_slicedc    Cs6Gdd„dtƒ}tjtdd|ƒjW5QRXdS)Nc@seZdZedd„ƒZdS)zFTestDataFrameSubclassing.test_subclass_attr_err_propagation.<locals>.AcSs|jSr)Z i_dont_existrrrr Ú nonexistenceŒszSTestDataFrameSubclassing.test_subclass_attr_err_propagation.<locals>.A.nonexistenceN)rrrrrTrrrr r,‹sr,z.*i_dont_exist.*)Úmatch)rÚpytestZraisesÚAttributeErrorrT)r    r,rrr Ú"test_subclass_attr_err_propagation‰sz;TestDataFrameSubclassing.test_subclass_attr_err_propagationcCsPtjdddgdddgdœtdƒd}tjdddgdddgd    œtd
ƒd}|j|d d \}}tjdtjdtjdgdtjdtjdgdœtd ƒd}tjddtjdtjgddtjdtjgd    œtd ƒd}t|tjƒsÒt‚t ||¡t|tjƒsît‚t ||¡|j     |j
¡\}}t|tj ƒst‚t  ||j    ¡t|tj ƒs>t‚t  ||j
¡dS)Nrrr+©rr9ÚACEr;rrD)r:ÚdÚABDr©ÚaxisÚABCDE) r=r rNÚalignÚnpÚnanr2r3r@rr:rMrO)r    Údf1Údf2Úres1Úres2Úexp1Úexp2rrr Útest_subclass_align“s4ÿÿ$þ$þ  z,TestDataFrameSubclassing.test_subclass_aligncCs*tjdddgdddgdœtdƒd}tjdddgtd    ƒd
d }|j|d d \}}tjdtjdtjdgdtjdtjdgdœtdƒd}tjddtjdtjgtdƒd
d }t|tjƒs¶t‚t     ||¡t|tjƒsÒt‚t 
||¡| |¡\}}t|tjƒsüt‚t 
||¡t|tjƒst‚t     ||¡dS)Nrrr+rYrZr;rrDr\ÚxrKrr]r_) r=r rNrMr`rarbr2r3r@rO)r    rBÚsrerfrgrhrrr Ú test_subclass_align_combinations°s*$$þÿ   z9TestDataFrameSubclassing.test_subclass_align_combinationscCsHt ddgi¡}| ¡D]*\}}t|tjƒs0t‚t ||j|¡qdS)Nrr)r=r Ziterrowsr2rMr3rOr>)r    rBÚiÚrowrrr Útest_subclass_iterrowsÌsz/TestDataFrameSubclassing.test_subclass_iterrowsc
Csxtjdddgdddgddd    ggd
d d gd ddgd}| ¡}tjddddddddd    g    tdƒtdƒgd}t ||¡dS)NrrrrDr+rErFrGrHrr9r:r7r8rI©r<r/Z    aaabbbcccZ    XYZXYZXYZr;)r=r ÚstackrMrNrOrPrrr Útest_subclass_stackÓsýÿz,TestDataFrameSubclassing.test_subclass_stackc
Cs¤tjddddgddddgd    d
d d gd dddggtjtttdƒtdƒƒƒddgdtjtttdƒtdƒƒƒddgdd}tjddgddgddgddgd    d gd
d gd dgddggtjtttdƒtdƒtdƒƒƒdddgdtddgdd d}| ¡}t ||¡| d¡}t ||¡tjddgddgddgddgd    d
gd d gd dgddggtjtttdƒtdƒtd!ƒƒƒdddgdtd"d#gdd d}| d¡}t ||¡dS)$Nr)é é é ééééééé é!é(é)é*é+ÚAABBÚcdcdÚaaaÚccc©ÚnamesÚWWXXÚyzyzÚwwwÚyyyrpÚAAAABBBBÚccddccddÚyzyzyzyzÚWr7©rLÚWXWXWXWXÚyÚz©    r=r rr4rNÚziprrqr@©r    rBrRrQrrr Útest_subclass_stack_multiâsb*ÿÿû
ø
þñ 
 ø
þñ
z2TestDataFrameSubclassing.test_subclass_stack_multic
Cs¤tjddddgddddgd    d
d d gd dddggtjtttdƒtdƒƒƒddgdtjtttdƒtdƒƒƒddgdd}tjddgddgddgddgd    d gd
d gd dgddggtjtttdƒtdƒtdƒƒƒdddgdtddgdd d}| ¡}t ||¡| d¡}t ||¡tjd!d"gddgd#d$gddgd%d&gd d gd'd(gddggtjtttdƒtdƒtd)ƒƒƒdddgdtd*d+gdd d}| d¡}t ||¡dS),Nr)rsç(@ç*@rvrwç6@ç7@rzr{ç@@ç€@@r~rçE@ç€E@r‚rƒr„r…r†rˆr‰rŠr‹rprŒrrŽrr7rg$@g&@g4@ç5@g>@g?@gD@g€D@r‘r’r“r”r–rrr Útest_subclass_stack_multi_mixedsj
 
 
 
üÿÿöø
þñ 
 ø
þñ
z8TestDataFrameSubclassing.test_subclass_stack_multi_mixedc
Csxtjdddgdddgddd    ggd
d d gd ddgd}| ¡}tjddddddddd    g    tdƒtdƒgd}t ||¡dS)NrrrrDr+rErFrGrHrr9r:r7r8rIrpZ    XXXYYYZZZZ    abcabcabcr;)r=r ÚunstackrMrNrOrPrrr Útest_subclass_unstackYsýÿz.TestDataFrameSubclassing.test_subclass_unstackc
CsŒtjddddgddddgd    d
d d gd dddggtjtttdƒtdƒƒƒddgdtjtttdƒtdƒƒƒddgdd}tjddddddddgd    d d
dd dd dggtddgddtjtttdƒtdƒtd ƒƒƒdddgdd}| ¡}t ||¡| d¡}t ||¡tjdd    dd
dd dd gdd ddddddggtd!d"gddtjtttdƒtdƒtd#ƒƒƒdddgdd}| d¡}t ||¡dS)$Nr)rsrtrurvrwrxryrzr{r|r}r~rr€rr‚rƒr„r…r†rˆr‰rŠr‹rpr,r-rÚWWWWXXXXÚyyzzyyzzÚcdcdcdcdr:r[ÚABABABAB©    r=r rr4rNr•rr¢r@r–rrr Útest_subclass_unstack_multihsB*ÿÿû
&þý     
 &þý    
z4TestDataFrameSubclassing.test_subclass_unstack_multic
CsŒtjddddgddddgd    d
d d gd dddggtjtttdƒtdƒƒƒddgdtjtttdƒtdƒƒƒddgdd}tjddddddddgd    d d
dd dd dggtddgddtjtttdƒtdƒtd ƒƒƒdddgdd}| ¡}t ||¡| d¡}t ||¡tjdd    dd
dd dd gdd ddddddggtd!d"gddtjtttdƒtdƒtd#ƒƒƒdddgdd}| d¡}t ||¡dS)$Nr)rsr˜r™rvrwršr›rzr{rœrr~rržrŸr‚rƒr„r…r†rˆr‰rŠr‹rpr,r-rr¤r¥r¦r:r[r§r¨r–rrr Ú!test_subclass_unstack_multi_mixedsR
 
 
 
üÿÿöþþú  
 þþú
z:TestDataFrameSubclassing.test_subclass_unstack_multi_mixedc
Cs†t ddddddgddddddgddddddgd    œ¡}|jd
d d d    }t dddd œdddd œdœ¡}d\|j_|j_t ||¡dS)Nr,r-ÚCÚOneÚTwogð?g@g@)r<r/Úvaluesr<r/r®©r,r-r«)r¬r­rp)r=r Zpivotr<rLr/r@)r    rBZpivotedÚexpectedrrr Útest_subclass_pivotÁsýÿ
 
þÿz,TestDataFrameSubclassing.test_subclass_pivotcCs„t ddgddgddgddgd    œ¡}tj|d
d gd }tjddd dgddd dgddddgddddggd
d ddgd}t ||¡dS)NÚJohnÚMaryÚDoeÚBoç@ç@é‚é–)ÚfirstÚlastÚheightÚweightrºr»)Zid_varsr¼r½ÚvariableÚvaluer.)r=r ÚpdZmeltr@)r    ZcheeseZmeltedr°rrr Útest_subclassed_meltØs"üÿ    
 
 
 
ü
ù
z-TestDataFrameSubclassing.test_subclassed_meltc
Csútj d¡tj d¡}t ddddœddd    dœd
d d dœd dddœtttdƒ|ƒƒdœ¡}|j    |d<| 
¡| 
¡dddddd    gd
d d d ddgddddddgddddddgdœ}t |¡}|  ddg¡dddg}t j |ddgddd}t ||¡dS)Né{rrr9r:)rrrr[ÚeÚfg@g333333ó?gffffffæ?gš™™™™™    @gÍÌÌÌÌÌô?gš™™™™™¹?)ZA1970ZA1980ZB1970ZB1980r7Úidi²i¼rrr)r7r,r-ÚyearrÅrÆr7r,r-)rmÚj)raÚrandomÚseedÚrandnr=r Údictr•r1r<ÚtolistZ    set_indexrÀZ wide_to_longr@)r    rjrBZexp_datar°Z
long_framerrr Útest_subclassed_wide_to_longñs*  
 
 
 
ûÿ
 
û
z5TestDataFrameSubclassing.test_subclassed_wide_to_longcsÐdd„‰dd„‰tjddddgd    d
dd gddd d gd    d
d dggddddgd}| ‡fdd„¡|j‡fdd„ddtjdddd gd    d
ddgddd d gd    d
d dggddddgd}|j‡fdd„dd}t|tjƒsÚt‚t ||¡t dddgdddgdddgdddgg¡}|jdd„dd}t|tjƒs4t‚t ||¡|jdd„ddd }t|tjƒsft‚t ||¡t dddgdddgdddgdddgg¡}|jd!d„dd}t|tjƒrÀt‚t ||¡dS)"NcSst|tjƒst‚dSr)r2r=rMr3©rnrrr Úcheck_row_subclassszJTestDataFrameSubclassing.test_subclassed_apply.<locals>.check_row_subclasscSs |ddkr|dd7<|S)Nr¾r¼r¿gà?rrÎrrr Ústretchs z?TestDataFrameSubclassing.test_subclassed_apply.<locals>.stretchr²r´r¼r¶r³rµr·r½r¸r¹rºr»r¾r¿r.csˆ|ƒSrr©rj©rÏrr Ú<lambda>#óz@TestDataFrameSubclassing.test_subclassed_apply.<locals>.<lambda>csˆ|ƒSrrrÑrÒrr rÓ$rÔrr]g@csˆ|ƒSrrrÑ)rÐrr rÓ0rÔrrcSst dddg¡S©Nrrr)r=rMrÑrrr rÓ6rÔcSs
dddgSrÕrrÑrrr rÓ:rÔÚexpand)r^Z result_typecSs
dddgSrÕrrÑrrr rÓ@rÔ)r=r Úapplyr2r3r@rMrO)r    rBr°Úresultr)rÏrÐr Útest_subclassed_applysD
 
 
 
ü
ù
 
 
 
 
ü
ù
 *  *z.TestDataFrameSubclassing.test_subclassed_applycCsDt dddgdddgddd    gd
œ¡}t||ƒƒ}t|tjƒs@t‚dS© NrrrrDr+rErFrGrHr¯©r=r Úgetattrr2rMr3)r    Zall_reductionsrBrØrrr Útest_subclassed_reductionsDs$ z3TestDataFrameSubclassing.test_subclassed_reductionsc    Cs>t dddddgdtjdddgdd    d    d    dgd
œ¡}| ¡}t|tjƒsJt‚t d d d gd ddgddd gdœ¡}| ¡}t|tjƒs†t‚tjddddgddddgddddgddd d!ggtj    t
t t
d"ƒt
d#ƒƒƒd$d%gd&tj    t
t t
d'ƒt
d(ƒƒƒd)d*gd&d+}| ¡}t|tjƒst‚t ¡}| ¡}t|tjƒs:t‚dS),Nr²ZMylaZLewisg8@r r}éFT)ZPersonZAgeÚSinglerrrr+rErFrGr¯r)rsrtrurvrwrxryrzr{r|r~rr€rr‚rƒr„r…r†rˆr‰rŠr‹rp) r=r rarbÚcountr2rMr3rr4rNr•©r    rBrØrrr Útest_subclassed_countKs6  ýÿ$*ÿÿû    z.TestDataFrameSubclassing.test_subclassed_countcCsBtjddgddgdœddgd}| ddg¡}t|tjƒs>t‚dS)NrrDr)Znum_legsZ    num_wingsZfalconZdogr;)r=r Úisinr2r3rárrr Ú    test_isinjs ÿz"TestDataFrameSubclassing.test_isincCs`t dddgdddgddd    gd
œ¡}| ¡}t|tjƒs<t‚t ¡}| ¡}t|tjƒs\t‚dSrÚ)r=r Z
duplicatedr2rMr3rárrr Útest_duplicatedqs $z(TestDataFrameSubclassing.test_duplicatedÚ
idx_methodÚidxmaxÚidxmincCsDt dddgdddgddd    gd
œ¡}t||ƒƒ}t|tjƒs@t‚dSrÚrÛ)r    rærBrØrrr Útest_idxzs$ z!TestDataFrameSubclassing.test_idxcCs˜t ddddgddddgg¡}t ddddg¡}| |¡}t|tjƒsJt‚t ddddgddddgg¡}t ddddg¡}| |¡}t|tjƒs”t‚dS)Nrréþÿÿÿéÿÿÿÿr)r=r rMÚdotr2r3)r    rBrkrØrrr Útest_dot€s
 
z!TestDataFrameSubclassing.test_dotcCs\t dddgdddgddd    gd
œ¡}| ¡}t|tjƒs<t‚|jd d }t|tjƒsXt‚dS) NrrrrDr+rErFrGrHr¯Fr;)r=r Z memory_usager2rMr3rárrr Útest_memory_usage‹s
$ z*TestDataFrameSubclassing.test_memory_usagecCs|dddddg}dddd    g}tjtj d
d ¡||d }tjtj d d ¡|dd …|d }|j|d ddd}t|tjƒsxt‚dS)Nrr9r:r[rÃZoneZtwoZthreeZfourr+rDrprTZkendall)r^ZdropÚmethod)    r=r rarÈrÊZcorrwithr2rMr3)r    r<r/rcrdZcorrelsrrr Ú test_corrwith“s  ÿ
ÿz&TestDataFrameSubclassing.test_corrwithcCs¬d}tjd|dd}tjtjtjtjgtjtjtjgtjtjtjgdœ|d}| |dd…¡}t|tjƒspt‚| |d¡}t|tj    ƒsŽt‚| d¡}t|tj    ƒs¨t‚dS)    Nrz1/1/1990Z53s)ZperiodsÚfreqr¯r;rêz
1989-12-31)
rÀZ
date_ranger=r rarbZasofr2r3rM)r    ÚNÚrngrBrØrrr Ú    test_asof¡sýú    
z"TestDataFrameSubclassing.test_asofcCs@t dddgdddgddd    gd
œ¡}| ¡}t|tjƒs<t‚dSrÚ)r=r rèr2rMr3rárrr Útest_idxmin_preserves_subclass¶s$z7TestDataFrameSubclassing.test_idxmin_preserves_subclasscCs@t dddgdddgddd    gd
œ¡}| ¡}t|tjƒs<t‚dSrÚ)r=r rçr2rMr3rárrr Útest_idxmax_preserves_subclass½s$z7TestDataFrameSubclassing.test_idxmax_preserves_subclasscCsZt dddgdddgddd    gd
œ¡}| ¡}t|tjƒs<t‚| ¡}t|t|ƒƒsVt‚dSrÚ)r=r Zconvert_dtypesr2r3Útype)r    rrBrØrrr Ú&test_convert_dtypes_preserves_subclassÄs
$z?TestDataFrameSubclassing.test_convert_dtypes_preserves_subclasscCsPt dddgdddgddd    gd
œ¡}| tjtjtjd
œ¡}t|tjƒsLt‚dSrÚ)    r=r ZastyperaÚint64Úint32Úfloat64r2r3rárrr Útest_astype_preserves_subclassÍs$z7TestDataFrameSubclassing.test_astype_preserves_subclasscCsFtddddgiƒ}t ddddgi¡}| |¡s4t‚| |¡sBt‚dS)Nrrrr)rr=r Úequalsr3)r    rcrdrrr Útest_equals_subclassÔsz-TestDataFrameSubclassing.test_equals_subclasscCsZt ddddgi¡}|jddgdd}t ddddgi¡}t|tjƒsJt‚t ||¡dS)Nr,rrrZffill)rï)r=r Úreplacer2r3r@)r    rBrØr°rrr Útest_replace_list_methodÜs
z1TestDataFrameSubclassing.test_replace_list_methodN)(rrrr6rCrSrXrirlrorrr—r¡r£r©rªr±rÁrÍrÙrÝrârärårVÚmarkZ parametrizerérírîÚtdZskip_if_no_scipyrðrôrõrörørürþrrrrr rsD7#
9>'26    
 
    r)ÚnumpyrarVZpandas.util._test_decoratorsÚutilZ_test_decoratorsrZpandasrÀrrrrZpandas._testingZ_testingr=Zfixturerrrrrr Ú<module>s