@@ -93,23 +93,23 @@ def test_pivot_table_dropna(self):
93
93
94
94
def test_pivot_table_categorical (self ):
95
95
96
- raw_cat1 = Categorical (["a" , "a" , "b" , "b" ],
97
- categories = ["a" , "b" , "z" ], ordered = True )
98
- raw_cat2 = Categorical (["c" , "d" , "c" , "d" ],
99
- categories = ["c" , "d" , "y" ], ordered = True )
100
- df = DataFrame ({"A" : raw_cat1 , "B" : raw_cat2 , "values" : [1 , 2 , 3 , 4 ]})
96
+ cat1 = Categorical (["a" , "a" , "b" , "b" ],
97
+ categories = ["a" , "b" , "z" ], ordered = True )
98
+ cat2 = Categorical (["c" , "d" , "c" , "d" ],
99
+ categories = ["c" , "d" , "y" ], ordered = True )
100
+ df = DataFrame ({"A" : cat1 , "B" : cat2 , "values" : [1 , 2 , 3 , 4 ]})
101
101
result = pd .pivot_table (df , values = 'values' , index = ['A' , 'B' ])
102
102
103
- exp_index = pd .MultiIndex .from_product (
104
- [Categorical (["a" , "b" , "z" ], ordered = True ),
105
- Categorical (["c" , "d" , "y" ], ordered = True )],
103
+ exp_index = pd .MultiIndex .from_arrays (
104
+ [cat1 , cat2 ],
106
105
names = ['A' , 'B' ])
107
106
expected = DataFrame (
108
- {'values' : [1 , 2 , np . nan , 3 , 4 , np . nan , np . nan , np . nan , np . nan ]},
107
+ {'values' : [1 , 2 , 3 , 4 ]},
109
108
index = exp_index )
110
109
tm .assert_frame_equal (result , expected )
111
110
112
- def test_pivot_table_dropna_categoricals (self ):
111
+ @pytest .mark .parametrize ('dropna' , [True , False ])
112
+ def test_pivot_table_dropna_categoricals (self , dropna ):
113
113
# GH 15193
114
114
categories = ['a' , 'b' , 'c' , 'd' ]
115
115
@@ -118,30 +118,18 @@ def test_pivot_table_dropna_categoricals(self):
118
118
'C' : range (0 , 9 )})
119
119
120
120
df ['A' ] = df ['A' ].astype (CDT (categories , ordered = False ))
121
- result_true = df .pivot_table (index = 'B' , columns = 'A' , values = 'C' ,
122
- dropna = True )
121
+ result = df .pivot_table (index = 'B' , columns = 'A' , values = 'C' ,
122
+ dropna = dropna )
123
123
expected_columns = Series (['a' , 'b' , 'c' ], name = 'A' )
124
124
expected_columns = expected_columns .astype (
125
125
CDT (categories , ordered = False ))
126
126
expected_index = Series ([1 , 2 , 3 ], name = 'B' )
127
- expected_true = DataFrame ([[0.0 , 3.0 , 6.0 ],
128
- [1.0 , 4.0 , 7.0 ],
129
- [2.0 , 5.0 , 8.0 ]],
130
- index = expected_index ,
131
- columns = expected_columns ,)
132
- tm .assert_frame_equal (expected_true , result_true )
133
-
134
- result_false = df .pivot_table (index = 'B' , columns = 'A' , values = 'C' ,
135
- dropna = False )
136
- expected_columns = (
137
- Series (['a' , 'b' , 'c' , 'd' ], name = 'A' ).astype ('category' )
138
- )
139
- expected_false = DataFrame ([[0.0 , 3.0 , 6.0 , np .NaN ],
140
- [1.0 , 4.0 , 7.0 , np .NaN ],
141
- [2.0 , 5.0 , 8.0 , np .NaN ]],
142
- index = expected_index ,
143
- columns = expected_columns ,)
144
- tm .assert_frame_equal (expected_false , result_false )
127
+ expected = DataFrame ([[0 , 3 , 6 ],
128
+ [1 , 4 , 7 ],
129
+ [2 , 5 , 8 ]],
130
+ index = expected_index ,
131
+ columns = expected_columns ,)
132
+ tm .assert_frame_equal (result , expected )
145
133
146
134
def test_pass_array (self ):
147
135
result = self .data .pivot_table (
@@ -1132,14 +1120,11 @@ def test_categorical_pivot_index_ordering(self):
1132
1120
columns = 'Year' ,
1133
1121
aggfunc = 'sum' )
1134
1122
expected_columns = pd .Int64Index ([2013 , 2014 ], name = 'Year' )
1135
- expected_index = pd .CategoricalIndex (months ,
1123
+ expected_index = pd .CategoricalIndex ([ 'January' ] ,
1136
1124
categories = months ,
1137
1125
ordered = False ,
1138
1126
name = 'Month' )
1139
- expected_data = np .empty ((12 , 2 ))
1140
- expected_data .fill (np .nan )
1141
- expected_data [0 , :] = [320. , 120. ]
1142
- expected = pd .DataFrame (expected_data ,
1127
+ expected = pd .DataFrame ([[320 , 120 ]],
1143
1128
index = expected_index ,
1144
1129
columns = expected_columns )
1145
1130
tm .assert_frame_equal (result , expected )
0 commit comments