@@ -69,116 +69,111 @@ def test_none_values_on_string_columns(self):
69
69
70
70
assert df .loc [2 , "a" ] is None
71
71
72
- @pytest .mark .parametrize ("kind" , ["series" , "frame" ])
73
- def test_loc_getitem_int (self , kind , request ):
72
+ def test_loc_getitem_int (self , frame_or_series ):
74
73
# int label
75
- obj = request . getfixturevalue ( f" { kind } _labels" )
74
+ obj = frame_or_series ( range ( 3 ), index = Index ( list ( "abc" ), dtype = object ) )
76
75
check_indexing_smoketest_or_raises (obj , "loc" , 2 , fails = KeyError )
77
76
78
- @pytest .mark .parametrize ("kind" , ["series" , "frame" ])
79
- def test_loc_getitem_label (self , kind , request ):
77
+ def test_loc_getitem_label (self , frame_or_series ):
80
78
# label
81
- obj = request . getfixturevalue ( f" { kind } _empty" )
79
+ obj = frame_or_series ( )
82
80
check_indexing_smoketest_or_raises (obj , "loc" , "c" , fails = KeyError )
83
81
82
+ @pytest .mark .parametrize ("key" , ["f" , 20 ])
84
83
@pytest .mark .parametrize (
85
- "key, typs, axes " ,
84
+ "index " ,
86
85
[
87
- ["f" , ["ints" , "uints" , "labels" , "mixed" , "ts" ], None ],
88
- ["f" , ["floats" ], None ],
89
- [20 , ["ints" , "uints" , "mixed" ], None ],
90
- [20 , ["labels" ], None ],
91
- [20 , ["ts" ], 0 ],
92
- [20 , ["floats" ], 0 ],
86
+ Index (list ("abcd" ), dtype = object ),
87
+ Index ([2 , 4 , "null" , 8 ], dtype = object ),
88
+ date_range ("20130101" , periods = 4 ),
89
+ Index (range (0 , 8 , 2 ), dtype = np .float64 ),
90
+ Index ([]),
93
91
],
94
92
)
95
- @pytest .mark .parametrize ("kind" , ["series" , "frame" ])
96
- def test_loc_getitem_label_out_of_range (self , key , typs , axes , kind , request ):
97
- for typ in typs :
98
- obj = request .getfixturevalue (f"{ kind } _{ typ } " )
99
- # out of range label
100
- check_indexing_smoketest_or_raises (
101
- obj , "loc" , key , axes = axes , fails = KeyError
102
- )
93
+ def test_loc_getitem_label_out_of_range (self , key , index , frame_or_series ):
94
+ obj = frame_or_series (range (len (index )), index = index )
95
+ # out of range label
96
+ check_indexing_smoketest_or_raises (obj , "loc" , key , fails = KeyError )
97
+
98
+ @pytest .mark .parametrize ("key" , [[0 , 1 , 2 ], [1 , 3.0 , "A" ]])
99
+ @pytest .mark .parametrize ("dtype" , [np .int64 , np .uint64 , np .float64 ])
100
+ def test_loc_getitem_label_list (self , key , dtype , frame_or_series ):
101
+ obj = frame_or_series (range (3 ), index = Index ([0 , 1 , 2 ], dtype = dtype ))
102
+ # list of labels
103
+ check_indexing_smoketest_or_raises (obj , "loc" , key , fails = KeyError )
103
104
104
105
@pytest .mark .parametrize (
105
- "key, typs " ,
106
+ "index " ,
106
107
[
107
- [[0 , 1 , 2 ], ["ints" , "uints" , "floats" ]],
108
- [[1 , 3.0 , "A" ], ["ints" , "uints" , "floats" ]],
108
+ None ,
109
+ Index ([0 , 1 , 2 ], dtype = np .int64 ),
110
+ Index ([0 , 1 , 2 ], dtype = np .uint64 ),
111
+ Index ([0 , 1 , 2 ], dtype = np .float64 ),
112
+ MultiIndex .from_arrays ([range (3 ), range (3 )]),
109
113
],
110
114
)
111
- @pytest .mark .parametrize ("kind" , ["series" , "frame" ])
112
- def test_loc_getitem_label_list (self , key , typs , kind , request ):
113
- for typ in typs :
114
- obj = request .getfixturevalue (f"{ kind } _{ typ } " )
115
- # list of labels
116
- check_indexing_smoketest_or_raises (obj , "loc" , key , fails = KeyError )
117
-
118
115
@pytest .mark .parametrize (
119
- "key, typs, axes" ,
120
- [
121
- [[0 , 1 , 2 ], ["empty" ], None ],
122
- [[0 , 2 , 10 ], ["ints" , "uints" , "floats" ], 0 ],
123
- [[3 , 6 , 7 ], ["ints" , "uints" , "floats" ], 1 ],
124
- # GH 17758 - MultiIndex and missing keys
125
- [[(1 , 3 ), (1 , 4 ), (2 , 5 )], ["multi" ], 0 ],
126
- ],
116
+ "key" , [[0 , 1 , 2 ], [0 , 2 , 10 ], [3 , 6 , 7 ], [(1 , 3 ), (1 , 4 ), (2 , 5 )]]
127
117
)
128
- @pytest .mark .parametrize ("kind" , ["series" , "frame" ])
129
- def test_loc_getitem_label_list_with_missing (self , key , typs , axes , kind , request ):
130
- for typ in typs :
131
- obj = request .getfixturevalue (f"{ kind } _{ typ } " )
132
- check_indexing_smoketest_or_raises (
133
- obj , "loc" , key , axes = axes , fails = KeyError
134
- )
118
+ def test_loc_getitem_label_list_with_missing (self , key , index , frame_or_series ):
119
+ if index is None :
120
+ obj = frame_or_series ()
121
+ else :
122
+ obj = frame_or_series (range (len (index )), index = index )
123
+ check_indexing_smoketest_or_raises (obj , "loc" , key , fails = KeyError )
135
124
136
- @pytest .mark .parametrize ("typs" , ["ints" , "uints" ])
137
- @pytest .mark .parametrize ("kind" , ["series" , "frame" ])
138
- def test_loc_getitem_label_list_fails (self , typs , kind , request ):
125
+ @pytest .mark .parametrize ("dtype" , [np .int64 , np .uint64 ])
126
+ def test_loc_getitem_label_list_fails (self , dtype , frame_or_series ):
139
127
# fails
140
- obj = request . getfixturevalue ( f" { kind } _ { typs } " )
128
+ obj = frame_or_series ( range ( 3 ), Index ([ 0 , 1 , 2 ], dtype = dtype ) )
141
129
check_indexing_smoketest_or_raises (
142
130
obj , "loc" , [20 , 30 , 40 ], axes = 1 , fails = KeyError
143
131
)
144
132
145
- def test_loc_getitem_label_array_like (self ):
146
- # TODO: test something?
147
- # array like
148
- pass
149
-
150
- @pytest .mark .parametrize ("kind" , ["series" , "frame" ])
151
- def test_loc_getitem_bool (self , kind , request ):
152
- obj = request .getfixturevalue (f"{ kind } _empty" )
133
+ def test_loc_getitem_bool (self , frame_or_series ):
134
+ obj = frame_or_series ()
153
135
# boolean indexers
154
136
b = [True , False , True , False ]
155
137
156
138
check_indexing_smoketest_or_raises (obj , "loc" , b , fails = IndexError )
157
139
158
140
@pytest .mark .parametrize (
159
- "slc, typs , axes, fails" ,
141
+ "slc, indexes , axes, fails" ,
160
142
[
161
143
[
162
144
slice (1 , 3 ),
163
- ["labels" , "mixed" , "empty" , "ts" , "floats" ],
145
+ [
146
+ Index (list ("abcd" ), dtype = object ),
147
+ Index ([2 , 4 , "null" , 8 ], dtype = object ),
148
+ None ,
149
+ date_range ("20130101" , periods = 4 ),
150
+ Index (range (0 , 12 , 3 ), dtype = np .float64 ),
151
+ ],
164
152
None ,
165
153
TypeError ,
166
154
],
167
- [slice ("20130102" , "20130104" ), ["ts" ], 1 , TypeError ],
168
- [slice (2 , 8 ), ["mixed" ], 0 , TypeError ],
169
- [slice (2 , 8 ), ["mixed" ], 1 , KeyError ],
170
- [slice (2 , 4 , 2 ), ["mixed" ], 0 , TypeError ],
155
+ [
156
+ slice ("20130102" , "20130104" ),
157
+ [date_range ("20130101" , periods = 4 )],
158
+ 1 ,
159
+ TypeError ,
160
+ ],
161
+ [slice (2 , 8 ), [Index ([2 , 4 , "null" , 8 ], dtype = object )], 0 , TypeError ],
162
+ [slice (2 , 8 ), [Index ([2 , 4 , "null" , 8 ], dtype = object )], 1 , KeyError ],
163
+ [slice (2 , 4 , 2 ), [Index ([2 , 4 , "null" , 8 ], dtype = object )], 0 , TypeError ],
171
164
],
172
165
)
173
- @pytest .mark .parametrize ("kind" , ["series" , "frame" ])
174
- def test_loc_getitem_label_slice (self , slc , typs , axes , fails , kind , request ):
166
+ def test_loc_getitem_label_slice (self , slc , indexes , axes , fails , frame_or_series ):
175
167
# label slices (with ints)
176
168
177
169
# real label slices
178
170
179
171
# GH 14316
180
- for typ in typs :
181
- obj = request .getfixturevalue (f"{ kind } _{ typ } " )
172
+ for index in indexes :
173
+ if index is None :
174
+ obj = frame_or_series ()
175
+ else :
176
+ obj = frame_or_series (range (len (index )), index = index )
182
177
check_indexing_smoketest_or_raises (
183
178
obj ,
184
179
"loc" ,
0 commit comments