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
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
U
­ý°děã@s¸dZddlmZmZddlZddlZddlZddlm    Z    m
Z
m Z m Z m Z mZmZmZddlmZddlmZGdd„dƒZGdd    „d    ƒZGd
d „d ƒZGd d „d ƒZdd„Zdd„ZdS)zG
test where we are determining what we are grouping, or getting groups
é)ÚdateÚ    timedeltaN)ÚCategoricalIndexÚ    DataFrameÚGrouperÚIndexÚ
MultiIndexÚSeriesÚ    TimestampÚ
date_range)ÚGroupingc@sLeZdZdd„Zdd„Zdd„Zdd„Zd    d
„Zd d „Zd d„Z    dd„Z
dS)Ú TestSelectionc    Csntddggddgd}| d¡}tjtdd|dgW5QRXtjtd    d|ddgW5QRXdS)
NééÚAÚB©Úcolumnsz"Columns not found: 'C'"©ÚmatchÚCz^[^A]+$)rÚgroupbyÚpytestÚraisesÚKeyError)ÚselfÚdfÚg©rúYd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/tests/groupby/test_grouping.pyÚtest_select_bad_colss 
z"TestSelection.test_select_bad_colsc    Cs²tddddgtdƒtddƒtdddƒgd    }d
}tjt|d | d¡W5QRXtjt|d | ddg¡W5QRX| d¡}| ¡}|jjd ksžt    ‚|jj
d ks®t    ‚dS)Nrrréréré)rÚdataz!Grouper for 'A' not 1-dimensionalrré) rÚrangerrÚ
ValueErrorrÚcountrZnlevelsÚAssertionErrorÚsize)rrÚmsgÚgroupedÚcrrrÚ'test_groupby_duplicated_column_errormsg*s
ÿ
z5TestSelection.test_groupby_duplicated_column_errormsgcCst| d¡j ¡}| d¡d ¡}t ||¡d|d<| d¡jdd}| d¡dddg tj¡}t ||¡dS)Nrrgø?ÚmeanT©Z numeric_onlyÚD)    rrÚsumÚtmÚassert_series_equalr/ÚaggÚnpÚassert_frame_equal©rrÚresultÚexpectedrrrÚtest_column_select_via_attr;s z)TestSelection.test_column_select_via_attrc
Cs¼tddddddddgddddddddgtj d¡tj d¡tj d¡dœƒ}| d¡d    d
g ¡}| d¡|jd d … ¡}|jdd…dd    d
gf d¡ ¡}t     ||¡t     ||¡dS) NÚfooÚbarÚoneÚtwoÚthreer#©rrrr1ÚErrr1rr!)
rr6ÚrandomÚrandnrr/rÚlocr3r7©rrr9Úresult2r:rrrÚtest_getitem_list_of_columnsEs
 
 
ûÿ
" z*TestSelection.test_getitem_list_of_columnsc    CsÎttdƒdtj d¡tj d¡tj d¡dœƒ}| d¡|jdd… ¡}| d¡ddg ¡}|jdd…dddgf d¡ ¡}t     
||¡t     
||¡t j t d    d
| d¡d  ¡W5QRXdS) NÚabcdrr#)rrr!r"rrr%r!ú"Cannot subset columns with a tupler)rr!)rÚlistr6rCrDrrr/rEr3r7rrr'rFrrrÚ!test_getitem_numeric_column_namesXs
 
 
 
üÿ"  z/TestSelection.test_getitem_numeric_column_namesc    Cs0tjtdd| d¡d ¡W5QRXdS)NrJrr)rr1)rrr'rr/©rrrrrÚ+test_getitem_single_tuple_of_columns_raisesnsz9TestSelection.test_getitem_single_tuple_of_columns_raisesc
Cs¤tddddddddgddddddddgtj d¡tj d¡tj d¡dœƒ}| d¡d     ¡}|jdd…dd    gf d¡ ¡}|jdd…d
f}|}t     ||¡dS) Nr<r=r>r?r@r#rArrr)
rr6rCrDrr/rEÚilocr3r4)rrr9Zas_frameZ    as_seriesr:rrrÚtest_getitem_single_columnss
 
 
ûÿ
 z(TestSelection.test_getitem_single_columncsNtddd„dDƒiƒ‰ˆ d¡}ˆ ‡fdd„¡}|j}|j}t ||¡dS)NÚTuplescss,|]$}tj ddd¡D]}||fVqqdS©r%éN©r6rCÚrandint©Ú.0ÚxÚyrrrÚ    <genexpr>‰szJTestSelection.test_indices_grouped_by_tuple_with_lambda.<locals>.<genexpr>©rrcsˆj|dfS©Nr©rO©rX©rrrÚ<lambda>ózITestSelection.test_indices_grouped_by_tuple_with_lambda.<locals>.<lambda>)rrÚindicesr3Úassert_dict_equal©rÚgbZ    gb_lambdar:r9rr_rÚ)test_indices_grouped_by_tuple_with_lambda†sÿ
z7TestSelection.test_indices_grouped_by_tuple_with_lambdaN) Ú__name__Ú
__module__Ú __qualname__r r.r;rHrLrNrPrfrrrrr s 
r c@seZdZej dejejej    ej
ej g¡dd„ƒZ dd„Z dd„Zdd    „Zd
d „Zd d „Zdd„Zdd„Zdd„Zdd„Zdd„Zej dddddgddddgd d!„ed"ƒDƒg¡d#d$„ƒZd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Zd/d0„Zd1d2„Zej d3d4d5g¡d6d7„ƒZ d8d9„Z!ej d3d4d5g¡d:d;„ƒZ"d<d=„Z#ej d>d4ddddddddddg
gd5ddddddddddg
gg¡d?d@„ƒZ$dAdB„Z%dCdD„Z&ej dEdFe'de(j)dGfdHe'de(j)e*ge(j)ddIdJfdKe'de(j)e*ge(j)ddIdJfg¡dLdM„ƒZ+dNdO„Z,dPdQ„Z-dRdS„Z.dTS)UÚ TestGroupingÚindexcCs|tt d¡ dd¡tdƒd}|t|ƒƒ|_|jtdƒdd d    d
„¡tt    |j 
¡ƒƒ|_|jtdƒdd d d
„¡dS) Né
rSrZABrZabcdeF©Z
group_keyscSs|S©Nrr^rrrr`ªraz7TestGrouping.test_grouper_index_types.<locals>.<lambda>cSs|Srnrr^rrrr`­ra) rr6ÚarangeÚreshaperKÚlenrkrÚapplyÚreversedÚtolist)rrkrrrrÚtest_grouper_index_typesšs
z%TestGrouping.test_grouper_index_typescCsät ¡tdd}t|t ¡ƒ}tj||gddgd}ttj     ddd¡|d    }| 
¡  t dd
d t dd
d g¡  ¡}tdgd d |_|  t dd
dt dd
dg¡  ¡}t ||¡|  t dd
dt dd
dg¡  ¡}t ||¡dS)Né)Údaysr<r=©Únamesrédéá©rkÚW©ÚkeyÚfreqÚint64©Údtype©Úlevelr€r)rÚtodayrr rÚ from_productrr6rCrUÚ reset_indexrrr2rrr3r7)rZd0ÚdatesZ
date_indexrr:r9rrrÚtest_grouper_multilevel_freq¯s"ÿÿÿ ÿz)TestGrouping.test_grouper_multilevel_freqc    Csjtddddddgddddddgdœƒ}| d    ¡}| ¡}| td    d
¡}| ¡}t ||¡| td    dd ¡}| ¡}t ||¡| d d „¡}dddg|d    <|jdd…d    dgf}t ||¡tddddddgddddddgddddddgdœƒ}| d    ¡ ¡}| td    d
g¡}| ¡}t ||¡| d    dg¡ ¡}| td    d
tdd
g¡}| ¡}t ||¡| d    tdd
g¡}| ¡}t ||¡| td    d
dg¡}| ¡}t ||¡tt    j
dddt j t dƒtdƒtdddgdddgdd}| tddd¡ ¡}tdgtjtdƒgdddd}t ||¡| tdd ¡ ¡}|jdd  ¡}t ||¡dS)!Nrrrr%r!rSr"©rrr©r)rÚaxiscSs| ¡Srn)r2r^rrrr`Ùraz8TestGrouping.test_grouper_creation_bug.<locals>.<lambda>r)rrrr#rr‚ÚabÚ20130101©Úperiodsr>r?r@rxr|ÚMr„éz
2013-01-31)r€Úname©r…)rrr2rr3r7rrrEr    r6rorr‡rKr&r ÚpdÚ DatetimeIndexr
r4)rrrr:r9ÚsrrrÚtest_grouper_creation_bugËs\&
   .ÿ     þþþ z&TestGrouping.test_grouper_creation_bugcCsZt ddddddg¡}ddg|_tt d    ¡d
d
d d d
d
gd œ|d }| dtddg¡jdd}|     ¡ ddg¡jdd}t
  ||¡| tdddg¡jdd}|     ¡ ddg¡jdd}t
  ||¡|     d¡}| dtddg¡jdd}|     ¡ ddg¡jdd}t
  ||¡| tdddg¡jdd}|     ¡ ddg¡jdd}t
  ||¡dS)N)Úar)ršr)ršr%©Úbr)rœr)rœr%ÚouterÚinnerr"r>r?r‹r|rr•Tr0) rÚ from_tuplesryrr6rorrr/rˆr3r7)rÚidxZdf_multir9r:Z    df_singlerrrÚtest_grouper_column_and_indexs:ÿ
þÿ ÿ 
ÿÿ ÿÿz*TestGrouping.test_grouper_column_and_indexcCszddg}tjddddg|d}tt d¡ d    d
¡|d }|j|d  ¡}| ¡ |¡ ¡}|j     
tj ¡|_    t   ||¡dS) NrXrY©rr©rr)r%r!)rSr"rxé éÿÿÿÿr%r|r•)rrŸrr6rorprr/rˆrZastyperr3r7)rZ    idx_namesr rZ    by_levelsZ
by_columnsrrrÚtest_groupby_levels_and_columns>sz,TestGrouping.test_groupby_levels_and_columnsc
Csddddg}ddg}t ddddgddddgddddgddddgddddggt¡}t||dd}t||d}|jdd|d     ¡}t d
dgd
dgd
dgd
dgd
dggt¡}t||dd}    t||    d}
t ||
¡t|j    |d }|jdd|d     ¡}t|j    |    d }
t ||
¡dS) NrrrrT)Ú
categoriesZordered)r$rr)rr…Úobservedr!r|)r$rk)
r6ÚarrayÚintrrrr2r3r7ÚT) rr¨rr§r$Z cat_columnsrr9Z expected_dataZexpected_columnsr:rrrÚ*test_groupby_categorical_index_and_columnsLs* 4ÿ *ÿ  z7TestGrouping.test_groupby_categorical_index_and_columnsc    Csštdditjtdƒtdddgddgd    d
}| tdd tdd d g¡ ¡}tdddddddgitjtdƒtdd ddgddgd    d
}t     ||¡dS)NrrrŽréPrr>r?rxr|r•r’r„ér“ér%)r€r‘)
rrr‡rKr rrr2r3r7r8rrrÚ#test_grouper_getting_correct_binnercs$ÿþÿþþz0TestGrouping.test_grouper_getting_correct_binnercCs t| d¡jƒddgkst‚dS)Nrr=r<)ÚsortedrÚgrouperr)rMrrrÚtest_grouper_iteryszTestGrouping.test_grouper_iterc    Cs(tjtdd| g¡W5QRXdS)NzNo group keys passed!r)rrr'rrMrrrÚtest_empty_groups|szTestGrouping.test_empty_groupscCs:| d¡}| |j¡jdd}|jdd}t ||¡dS)NrTr0)rr²r/r3r7)rrr,r9r:rrrÚtest_groupby_groupers
 z!TestGrouping.test_groupby_groupercCsàtddiƒ}| ddi¡ t¡}| dg¡ t¡}t ||¡tddddgtdƒd    }d
d
d d d œ}| |¡ ¡}| |¡ tj¡}tj    d
d
d d gtj
d }| |¡ ¡}| |¡ ¡}t ||¡t ||¡t ||¡dS)NZT1rSZT2çð?ç@g@g@rIr|rr)ršrœr-Údr‚) r    rr5r2r3r4rKr/r6r©r)rr˜r9r:ÚmappingrGZexp_keyZ    expected2rrrÚtest_groupby_dict_mappingˆs    z&TestGrouping.test_groupby_dict_mappingrrrr%ršrœr-r¸cCsg|]}tddd|ƒ‘qS)iåér“)r
)rWÚirrrÚ
<listcomp> szTestGrouping.<listcomp>r!cCs\|ddddg|d}tddddg|dd}| |¡ ¡}|ddgƒ}d|j_t ||¡dS)    Nrrr%r!r|r)ršrš)rkr”)r    rÚlastrkr”r3Z assert_equal)rZframe_or_seriesrkÚobjÚgroupsr9r:rrrÚ$test_groupby_series_named_with_tuple›s
 z1TestGrouping.test_groupby_series_named_with_tuplec    CsRtdddd}ttj d¡|d}d}tjt|d| dd    „¡W5QRXdS)
Nz 01-Jan-2013r¤ZMS©r‘r€r|z4Grouper result violates len\(labels\) == len\(data\)rcSs |dd…S)Nrr"rrŒrrrr`»razDTestGrouping.test_groupby_grouper_f_sanity_checked.<locals>.<lambda>)    r r    r6rCrDrrr)r)rr‰Útsr+rrrÚ%test_groupby_grouper_f_sanity_checked¬s
 z2TestGrouping.test_groupby_grouper_f_sanity_checkedc    Cs6d}tjt|dt|j|ddgƒW5QRXdS)NzEGrouper for '<class 'pandas.core.frame.DataFrame'>' not 1-dimensionalrr)rrr'r rk)rrr+rrrÚ%test_grouping_error_on_multidim_input½sz2TestGrouping.test_grouping_error_on_multidim_inputcCsXtdddgdddgddd    ggƒ}t d
d d g¡|_|jdd dgd ¡}t ||¡dS)Nrrr%r!rSr"r»r#é    r[r¢)rrr©rr…)rrrŸrrÚfirstr3r7)rrr9rrrÚtest_multiindex_passthruÂs z%TestGrouping.test_multiindex_passthrucCs¸|jdd ¡}|jdd ¡}t ||¡|jdd ¡}|jdd ¡}t ||¡|jddgd ¡}| ¡}t ||¡|jddgd ¡}|jddgd ¡}t ||¡dS)Nr¥r•ÚsecondéþÿÿÿrÈ)rr2r3r7Z
sort_index)rÚmframer9r:rrrÚtest_multiindex_negative_levelËs   z+TestGrouping.test_multiindex_negative_levelcCs4t t|jƒ¡|_|jdddd dtji¡dS)NrF©Zas_indexrÚQ)r6rorqrrr5r/rMrrrÚ&test_multifunc_select_col_integer_colsÝsz3TestGrouping.test_multifunc_select_col_integer_colscCsêddgddgg}t |¡}tddgg|d}| d¡j}|ddgksJt‚| d    g¡j}|ddgksjt‚tddgd
d gg|d}| d¡j}| d    g¡j}||ks¨t‚tddgd
dgg|d}| d¡j}| d    g¡j}t ||¡dS) Nr(Úvaluesú    to filterÚrrrr)rÒrÓrr)rrŸrrrÀr)r3rc)rÚlstZmidxrr,r:r9rrrÚ#test_multiindex_columns_empty_levelãs
    z0TestGrouping.test_multiindex_columns_empty_levelc    Csøtddddgddddgddddggt dddd    gddddgg¡d
}| d g¡j}| d ¡j}t ||¡t|jt dddd    gd d d d gg¡d
}| dg¡j}| d ¡j}t ||¡t|jdddd    gd
}| dg¡j}| d ¡j}t ||¡dS)Nrrr%r!rSr"ršrœr-rr›r¸Úe)rœr¸)ršr¸)rœrÖ)rrÚ from_arraysrrÀr3rcrÑ)rrr:r9Zdf2Zdf3rrrÚtest_groupby_multiindex_tupleûs( þ  ÿþ   z*TestGrouping.test_groupby_multiindex_tupleÚsortTFc     CsŠ|}| ¡}|jd|d ¡}|jd|d ¡}|j|dj|d ¡}|j|dj|d ¡}    d|j_d|    j_|jjdks€t‚|jjdkst‚t ||¡t ||    ¡|jj|jj    dksÀt‚|jj|jj    dksØt‚|jd|d ¡}|jd|d ¡}t ||¡t ||    ¡|j
jdd|d ¡}|j
jdd|d ¡}t ||j
¡t ||    j
¡d}
t j t |
d    |jdd
W5QRXdS) Nr©r…rÙrrÈ)rÙrÊ)r…rrÙz2level > 0 or level < -1 only valid with MultiIndexrr•)rˆrr2rÑrkr”r)r3r7ryr«rrr') rrÙrÌrÚframeZ    deleveledZresult0Úresult1Z    expected0Z    expected1r+rrrÚtest_groupby_levels2    zTestGrouping.test_groupby_levelc    Cs€tdgddgdtdƒdœƒ d¡}|dkr6|j}|jd|dd    | |¡›}tjt|d
|jd |dW5QRXdS) Nrr%rr")ÚexpZvar1rÞ)rr)r…rz&level name foo is not the name of the rr<)    rr&Ú    set_indexr«rZ_get_axis_namerrr')rrrr+rrrÚtest_groupby_level_index_names=s"ÿz+TestGrouping.test_groupby_level_index_namesc Cs tddgddddggddddddddgddddddddggd}tt d¡|d}|jd|d ¡}td    d
gddgd}t ||¡tddgddddggddddd dddgddddddddggd}tt d¡|d}|jd|d ¡}td    d gd dgd}t ||¡dS)Nrrrr%)ÚlevelsÚcodesg @r|rÚg@g6@r¥g2@gr¶)rr    r6rorr2r3r4)rrÙrkr˜r9r:rrrÚtest_groupby_level_with_nasIs &þ &þz(TestGrouping.test_groupby_level_with_nasc    CsZ|}d}tjt|d| ¡W5QRXd}tjt|d|jdddW5QRXdS)Nz*You have to supply one of 'by' and 'level'r)Zbyr…)rrÚ    TypeErrorr)rrÌrÛr+rrrÚtest_groupby_argsbszTestGrouping.test_groupby_argsz sort,labelscCs4|jd|d}t |tj¡}t |jjd|¡dS)NrrÚ)rr6r©Úintpr3Úassert_almost_equalr²râ)rrÙÚlabelsrÌr,Ú
exp_labelsrrrÚtest_level_preserve_orderns    z&TestGrouping.test_level_preserve_orderc CsN| |j d¡¡}tjddddddddddg
tjd}t |jj    d|¡dS)Nrrrr%r‚)
rrkZget_level_valuesr6r©rær3rçr²râ)rrÌr,rérrrÚtest_grouping_labels{s$z!TestGrouping.test_grouping_labelscCsˆtdtddddiƒ}tj|jd<tddd}| |g¡}td    ƒtt    t
d
ƒƒƒi}t   |j |¡| |¡}td    ƒdi}t   |j |¡dS) Nrz1/1/2011imr1rÂr¥ZASr~z
2011-01-01il)rr r–ZNaTrOrrr
rrKr&r3rcrÀ)rrr²r9r:rrrÚtest_list_grouper_with_nat€s   
 z'TestGrouping.test_list_grouper_with_natz func,expectedZ    transform©r”rƒr5©rƒr”)r”rƒrkrrcCsBtggdœƒ}|jddd}t|d|ƒdd„ƒ}t ||¡dS)Nr£rFrmrcSs|Srnrr^rrrr`¬raz>TestGrouping.test_evaluate_with_empty_groups.<locals>.<lambda>)rrÚgetattrr3r4)rÚfuncr:rrr9rrrÚtest_evaluate_with_empty_groupssz,TestGrouping.test_evaluate_with_empty_groupscCsÐtgddd}| g¡}| ¡}| tgtjd¡}t ||¡t    |j
j ƒdksTt ‚t  |j
jdtjgt tj¡d¡t  |j
jdtjgt tj¡d¡|j
jddks´t ‚| |¡j
jdgksÌt ‚dS)Nr”Úfloat64rír‚rrr)r    rr/Zset_axisrr6rær3r4rqr²Ú    groupingsr)Zassert_numpy_array_equalZ
group_infor©rƒry)rr˜Úgrr9r:rrrÚtest_groupby_empty¯s 
 
ÿ
ÿzTestGrouping.test_groupby_emptycCsŽtdtjdgdtjdggdddgd ddg¡}|jddgd ¡}tgttdgd    d
tgd d
ggggddgd dgd d}t     ||¡dS)NrXrlérrrrr•Úobjectr‚rò)rárâryr)r$rkrrƒ)
rr6Únanrßrr2rrr3r7r8rrrÚ%test_groupby_level_index_value_all_naÇs$ÿþýø
z2TestGrouping.test_groupby_level_index_value_all_nacCsxtdddgdddggdddgd    }| ddg¡}||jd
k}| d¡ ¡}td dgtgtjdd d }t     ||¡dS)Né{ršr¶rœr·ÚidÚcategoryÚvaluerrròrî)rƒrrk)
rrßrýrr2rr6rr3r7)rrÚemptyr9r:rrrÚ#test_groupby_multiindex_level_emptyÙsÿýz0TestGrouping.test_groupby_multiindex_level_emptyN)/rgrhrirÚmarkZ parametrizer3ZmakeFloatIndexZmakeStringIndexZ makeIntIndexZ makeDateIndexZmakePeriodIndexrurŠr™r¡r¦r¬r°r³r´rµrºr&rÁrÄrÅrÉrÍrÐrÕrØrÝràrãrårêrërìr    r6ròrrñrõrùrÿrrrrrj™s–ûþ
 
E.
 
ýþ
        
( 
 þþ
 þÿþÿþõþ
 
rjc@sDeZdZdd„Zdd„Zdd„Zdd„Zd    d
„Zd d „Zd d„Z    dS)Ú TestGetGroupc    CsŠtt ddddddg¡ddddddgddddd    d
gd œƒ}| d ¡}t|jƒd }| |¡}| t|ƒ ¡¡}| t    t|ƒƒ¡}t
  ||¡t
  ||¡| d dg¡}t|jƒd }| |¡}| t|d ƒ ¡|df¡}| t    t|d ƒƒ|df¡}t
  ||¡t
  ||¡d}t j t|d| d¡W5QRXt j t|d| d¡W5QRXd}t j t|d| d¡W5QRXdS)Nz 10-Oct-2013z 11-Oct-2013r<r=rrr%r!rSr")ÚDATEÚlabelZVALrrrz<must supply a tuple to get_group with multiple grouping keysrzHmust supply a same-length tuple to get_group with multiple grouping keys)r<r=Úbaz)rr–Ú to_datetimerrKrÀÚ    get_groupr
Z to_pydatetimeÚstrr3r7rrr')rrrrrÜrGZresult3r+rrrÚtest_get_groupîsHúÿ
ôÿ
 
 
  zTestGetGroup.test_get_groupc    Csœtddddgƒ}ddddg}|jt |d|¡|d    }| t dd¡¡}tddgddgd
}t ||¡d }tj    t
|d | t dd¡¡W5QRXdS) Nr%rr»r"rrSrlé)r¨r|z"Interval\(10, 15, closed='right'\)r) rrr–ZcutrZIntervalr3r7rrr)rr¨r¸Zbinsrr9r:r+rrrÚtest_get_group_empty_binss  z&TestGetGroup.test_get_group_empty_binscCsÂtddddggdgdj}| d¡}tdddgiddgd}| d¡}t ||¡t ddddg¡}tdd    d
„|Dƒiƒ}| d¡}| d ¡}td|df|dfgiddgd}t ||¡dS) N)rr£Úidsr|rrú
2010-01-01z
2010-01-02cSsg|]
}|f‘qSrr)rWrXrrrr½5sz@TestGetGroup.test_get_group_grouped_by_tuple.<locals>.<listcomp>)r )rr«rrr3r7r–r)rrrôr:r9ÚdtrrrÚtest_get_group_grouped_by_tuple,s
 
 
 
$z,TestGetGroup.test_get_group_grouped_by_tuplecsrtddd„dDƒiƒ‰ˆ d¡}ˆ ‡fdd„¡}| t|j ¡ƒd¡}| t|j ¡ƒd¡}t ||¡dS)NrQcss,|]$}tj ddd¡D]}||fVqqdSrRrTrVrrrrZ>szKTestGetGroup.test_get_group_grouped_by_tuple_with_lambda.<locals>.<genexpr>r[csˆj|dfSr\r]r^r_rrr`BrazJTestGetGroup.test_get_group_grouped_by_tuple_with_lambda.<locals>.<lambda>r)rrrrKrÀÚkeysr3r7rdrr_rÚ+test_get_group_grouped_by_tuple_with_lambda;sÿ
z8TestGetGroup.test_get_group_grouped_by_tuple_with_lambdacCsJt d¡}d}t||td}tdd}| |¡}tt|ƒdƒdksFt‚dS)Nrr‚r1©r€)    r–r—r    r÷rrÚnextÚiterr))rrkr$Zseriesr²r,rrrÚtest_groupby_with_emptyIs 
 
 
z$TestGetGroup.test_groupby_with_emptycCs¤tdtdƒiƒ}t | d¡ d¡|jddg¡ttdddgddgd}t | d¡ ¡|¡t | d¡     ¡|¡|jd    d
dg}t | d¡ 
d ¡|¡dS) NršZabssbabrrSrœr˜)r”)rkrr%r!r) rrKr3r7rrrOrr(r2Znth)rrrÞrrrÚtest_groupby_with_single_columnQs"z,TestGetGroup.test_groupby_with_single_columncCs|tddddgddddgddddggd    d
d d gd }| d    d
g¡}| d    d
d g¡ ¡}|jddksft‚|jddksxt‚dS)Nr<r=rrrrrr%rÈrÊÚthirdr>r)r<r=r)r<rr)rrßrr*rEr)rMrrrÚtest_gb_key_len_equal_axis_len\s 
þz+TestGetGroup.test_gb_key_len_equal_axis_lenN)
rgrhrirr
rrrrrrrrrrís/ rc@sDeZdZdd„Zdd„Zdd„Zdd„Zd    d
„Zd d „Zd d„Z    dS)Ú TestIterationcCsÄ| dg¡}|j}||jks t‚|j ¡D]"\}}|j|d|k ¡s*t‚q*| ddg¡}|j}||jkspt‚|j ¡D]D\}}|j|d|dk ¡s t‚|j|d|dk ¡szt‚qzdS)Nrrrr)rrÀr)ÚitemsrEÚall)rrr,rÀÚkÚvrrrÚ test_groupsos zTestIteration.test_groupscCs,| dd„dd„g¡}|jjdD]}q"dS)NcSs| ¡Srn)Úweekdayr^rrrr`‚raz9TestIteration.test_grouping_is_iterable.<locals>.<lambda>cSs|jSrn)Úyearr^rrrr`‚rar)rr²ró)rZtsframer,rrrrÚtest_grouping_is_iterablesz'TestIteration.test_grouping_is_iterablecCsàtt d¡ƒ}t ddddddg¡}t ddddddg¡}| ||g¡}t|ƒ}dd|ddgfdd|dgfdd|d    gfdd|d
d gfg}t|ƒD]B\}\\}}    }
||\} } } | |ksÂt‚| |    ksÎt‚t     |
| ¡q˜dS) Nr"ršrœÚ1Ú2rrrr!r%rS)
r    r6ror©rrKÚ    enumerater)r3r4)rr˜Úk1Úk2r,Úiteratedr:r¼r>r?r@Úe1Úe2Úe3rrrÚtest_multi_iterˆsü  zTestIteration.test_multi_itercCs¼t ddddddg¡}t ddddddg¡}ttj d¡tj d¡||dœddd    d
d d gd }| ddg¡}t|ƒ}|j}dd|j|dgfdd|j|ddgfdd|j|ddgfdd|j|dgfg}t    |ƒD]F\}    \\}
} } ||    \} }}| |
kst
‚|| kst
‚t   | |¡qÚt ddddddg¡|d<t ddddddg¡|d<| ddg¡}dd„|Dƒ}t |ƒdks„t
‚| dddg¡ ¡}|jjddd}|D]
\}}q¬dS)Nrœršr!r"r")Zv1Zv2r$r%r>r?r@ZfourZfiveÚsixr|r$r%r!r%rSrrrcSsi|]\}}||“qSrr)rWrZgprrrÚ
<dictcomp>¼sz7TestIteration.test_multi_iter_frame.<locals>.<dictcomp>rrrr£rÇ)r6r©rrCrDrrKrkrEr#r)r3r7rqr/r«)rZ three_groupr$r%rr,r&r r:r¼r>r?r@r'r(r)rÀZ three_levelsrÚgrouprrrÚtest_multi_iter_frameœs8þü z#TestIteration.test_multi_iter_framecCs˜tt| d¡ƒƒtt| ddg¡ƒƒtt|d |d¡ƒƒtt|d |d|dg¡ƒƒtt| d¡dƒƒtt| ddg¡dƒƒdS)Nrrr)ÚdictrrrMrrrÚ test_dictifyÅs "zTestIteration.test_dictifycCstddgddgdœt ddg¡d}| tdd    d
g¡}t|jƒd ksJt‚|jd ksXt‚t    d ƒdf|jksnt‚t    d ƒdf|jks„t‚| 
t    d ƒdf¡}t   ||j dgdd…f¡| 
t    d ƒdf¡}t   ||j dgdd…f¡tdddgdddgdœt dddg¡d}| tdd    d
g¡}t|jƒd ks2t‚|jd ksBt‚t    d ƒdf|jksZt‚t    d ƒdf|jksrt‚| 
t    d ƒdf¡}t   ||j dd gdd…f¡| 
t    d ƒdf¡}t   ||j dgdd…f¡tdddgdddgdœt dddg¡d}| tdd    d
g¡}t|jƒdks"t‚|jdks2t‚t    d ƒdf|jksJt‚t    d ƒdf|jksbt‚t    dƒdf|jkszt‚| 
t    d ƒdf¡}t   ||j dgdd…f¡| 
t    d ƒdf¡}t   ||j dgdd…f¡| 
t    dƒdf¡}t   ||j d gdd…f¡dS)NÚstartiÒi.)ÚeventZchangez
2014-09-10z
2013-10-10r|r’rr2rz
2014-09-30z
2013-10-31rri£#z
2014-09-15z
2014-08-05r%z
2014-08-31)rr–r—rrrqrÀr)Zngroupsr
rr3r7rO)rrr,ÚresrrrÚtest_groupby_with_small_elemÍsT þþþz*TestIteration.test_groupby_with_small_elemcCs\t tdƒtdƒg¡}tdddgg|d}| |d¡}|jjd ¡}d    }||ksXt‚dS)
NZAABZabarrr%r)rršrzGrouping(('A', 'a')))    rr×rKrrr²róÚ__repr__r))rÚmirrôr9r:rrrÚtest_grouping_string_reprs z'TestIteration.test_grouping_string_reprN)
rgrhrirr r*r.r0r4r7rrrrrns    )4rcCs˜tdddgdddgdddgdœƒ d¡}|jtddtd    d
gd d }|jjd jrXt‚|jjdjsjt‚| ¡}tddgddgdœƒ}t     
||¡dS)Nrrr%r!rS)ršrœr-ršr•rœrŒFrÎrr»)rœr-) rrßrrr²róZin_axisr)r2r3r7)rrer9r:rrrÚtest_grouping_by_key_is_in_axis s(r8c    Cs
tdddgddœƒ}tdd}| |¡}d}tjt|d |j}W5QRX||jksZt‚d    }tjt|d |j}W5QRX||jksŒt‚d
}tjt|d |j    }W5QRX||j    ks¾t‚d }tjt|d |j
W5QRXd }tjt|d |j W5QRXdS) Nrrr%)ršrœršrŒzUse GroupBy.groups insteadrzUse GroupBy.grouper insteadz-Grouper.obj is deprecated and will be removedzUse Resampler.ax insteadzGrouper.indexer is deprecated) rrrr3Zassert_produces_warningÚ FutureWarningrÀr)r²r¿ZaxZindexer)rZgrperrer+r3rrrÚtest_grouper_groupss*
 
r:)Ú__doc__ÚdatetimerrÚnumpyr6rZpandasr–rrrrrr    r
r Zpandas._testingZ_testingr3Zpandas.core.groupby.grouperr r rjrrr8r:rrrrÚ<module>s&(
 {X