@@ -57,27 +57,32 @@ def test_basic_getitem_with_labels(datetime_series):
57
57
expected = datetime_series .loc [indices [0 ] : indices [2 ]]
58
58
tm .assert_series_equal (result , expected )
59
59
60
+
61
+ def test_basic_getitem_with_integer_labels ():
60
62
# integer indexes, be careful
61
- s = Series (np .random .randn (10 ), index = list (range (0 , 20 , 2 )))
63
+ ser = Series (np .random .randn (10 ), index = list (range (0 , 20 , 2 )))
62
64
inds = [0 , 2 , 5 , 7 , 8 ]
63
65
arr_inds = np .array ([0 , 2 , 5 , 7 , 8 ])
64
66
with pytest .raises (KeyError , match = "with any missing labels" ):
65
- s [inds ]
67
+ ser [inds ]
66
68
67
69
with pytest .raises (KeyError , match = "with any missing labels" ):
68
- s [arr_inds ]
70
+ ser [arr_inds ]
71
+
72
+
73
+ def test_basic_getitem_dt64tz_values ():
69
74
70
75
# GH12089
71
76
# with tz for values
72
- s = Series (
77
+ ser = Series (
73
78
pd .date_range ("2011-01-01" , periods = 3 , tz = "US/Eastern" ), index = ["a" , "b" , "c" ]
74
79
)
75
80
expected = Timestamp ("2011-01-01" , tz = "US/Eastern" )
76
- result = s .loc ["a" ]
81
+ result = ser .loc ["a" ]
77
82
assert result == expected
78
- result = s .iloc [0 ]
83
+ result = ser .iloc [0 ]
79
84
assert result == expected
80
- result = s ["a" ]
85
+ result = ser ["a" ]
81
86
assert result == expected
82
87
83
88
@@ -93,33 +98,13 @@ def test_getitem_setitem_ellipsis():
93
98
assert (result == 5 ).all ()
94
99
95
100
96
- def test_getitem_get (datetime_series , string_series , object_series ):
97
- idx1 = string_series .index [5 ]
98
- idx2 = object_series .index [5 ]
99
-
100
- assert string_series [idx1 ] == string_series .get (idx1 )
101
- assert object_series [idx2 ] == object_series .get (idx2 )
102
-
103
- assert string_series [idx1 ] == string_series [5 ]
104
- assert object_series [idx2 ] == object_series [5 ]
105
-
106
- assert string_series .get (- 1 ) == string_series .get (string_series .index [- 1 ])
107
- assert string_series [5 ] == string_series .get (string_series .index [5 ])
108
-
101
+ def test_getitem_missing (datetime_series ):
109
102
# missing
110
103
d = datetime_series .index [0 ] - BDay ()
111
104
msg = r"Timestamp\('1999-12-31 00:00:00', freq='B'\)"
112
105
with pytest .raises (KeyError , match = msg ):
113
106
datetime_series [d ]
114
107
115
- # None
116
- # GH 5652
117
- s1 = Series (dtype = object )
118
- s2 = Series (dtype = object , index = list ("abc" ))
119
- for s in [s1 , s2 ]:
120
- result = s .get (None )
121
- assert result is None
122
-
123
108
124
109
def test_getitem_fancy (string_series , object_series ):
125
110
slice1 = string_series [[1 , 2 , 3 ]]
@@ -180,14 +165,18 @@ def test_getitem_box_float64(datetime_series):
180
165
def test_series_box_timestamp ():
181
166
rng = pd .date_range ("20090415" , "20090519" , freq = "B" )
182
167
ser = Series (rng )
168
+ assert isinstance (ser [0 ], Timestamp )
169
+ assert isinstance (ser .at [1 ], Timestamp )
170
+ assert isinstance (ser .iat [2 ], Timestamp )
171
+ assert isinstance (ser .loc [3 ], Timestamp )
172
+ assert isinstance (ser .iloc [4 ], Timestamp )
183
173
184
- assert isinstance (ser [5 ], Timestamp )
185
-
186
- rng = pd .date_range ("20090415" , "20090519" , freq = "B" )
187
174
ser = Series (rng , index = rng )
188
- assert isinstance (ser [5 ], Timestamp )
189
-
190
- assert isinstance (ser .iat [5 ], Timestamp )
175
+ assert isinstance (ser [0 ], Timestamp )
176
+ assert isinstance (ser .at [rng [1 ]], Timestamp )
177
+ assert isinstance (ser .iat [2 ], Timestamp )
178
+ assert isinstance (ser .loc [rng [3 ]], Timestamp )
179
+ assert isinstance (ser .iloc [4 ], Timestamp )
191
180
192
181
193
182
def test_series_box_timedelta ():
@@ -256,19 +245,23 @@ def test_setitem(datetime_series, string_series):
256
245
datetime_series [np .isnan (datetime_series )] = 5
257
246
assert not np .isnan (datetime_series [2 ])
258
247
248
+
249
+ def test_setitem_slicestep ():
259
250
# caught this bug when writing tests
260
251
series = Series (tm .makeIntIndex (20 ).astype (float ), index = tm .makeIntIndex (20 ))
261
252
262
253
series [::2 ] = 0
263
254
assert (series [::2 ] == 0 ).all ()
264
255
256
+
257
+ def test_setitem_not_contained (string_series ):
265
258
# set item that's not contained
266
- s = string_series .copy ()
267
- s ["foobar" ] = 1
259
+ ser = string_series .copy ()
260
+ ser ["foobar" ] = 1
268
261
269
262
app = Series ([1 ], index = ["foobar" ], name = "series" )
270
263
expected = string_series .append (app )
271
- tm .assert_series_equal (s , expected )
264
+ tm .assert_series_equal (ser , expected )
272
265
273
266
274
267
def test_setslice (datetime_series ):
@@ -451,11 +444,13 @@ def test_categorical_assigning_ops():
451
444
exp = Series (Categorical (["b" , "a" ], categories = ["a" , "b" ]), index = ["x" , "y" ])
452
445
tm .assert_series_equal (s , exp )
453
446
447
+
448
+ def test_setitem_nan_into_categorical ():
454
449
# ensure that one can set something to np.nan
455
- s = Series (Categorical ([1 , 2 , 3 ]))
450
+ ser = Series (Categorical ([1 , 2 , 3 ]))
456
451
exp = Series (Categorical ([1 , np .nan , 3 ], categories = [1 , 2 , 3 ]))
457
- s [1 ] = np .nan
458
- tm .assert_series_equal (s , exp )
452
+ ser [1 ] = np .nan
453
+ tm .assert_series_equal (ser , exp )
459
454
460
455
461
456
def test_getitem_categorical_str ():
@@ -537,12 +532,14 @@ def test_timedelta_assignment():
537
532
expected = Series (Timedelta ("1 days" ), index = ["A" , "B" ])
538
533
tm .assert_series_equal (s , expected )
539
534
535
+
536
+ def test_setitem_td64_non_nano ():
540
537
# GH 14155
541
- s = Series (10 * [np .timedelta64 (10 , "m" )])
542
- s .loc [[1 , 2 , 3 ]] = np .timedelta64 (20 , "m" )
538
+ ser = Series (10 * [np .timedelta64 (10 , "m" )])
539
+ ser .loc [[1 , 2 , 3 ]] = np .timedelta64 (20 , "m" )
543
540
expected = Series (10 * [np .timedelta64 (10 , "m" )])
544
541
expected .loc [[1 , 2 , 3 ]] = Timedelta (np .timedelta64 (20 , "m" ))
545
- tm .assert_series_equal (s , expected )
542
+ tm .assert_series_equal (ser , expected )
546
543
547
544
548
545
@pytest .mark .parametrize (
@@ -612,23 +609,25 @@ def test_underlying_data_conversion():
612
609
assert return_value is None
613
610
tm .assert_frame_equal (df , expected )
614
611
612
+
613
+ def test_chained_assignment ():
615
614
# GH 3970
616
- # these are chained assignments as well
617
- pd .set_option ("chained_assignment" , None )
618
- df = DataFrame ({"aa" : range (5 ), "bb" : [2.2 ] * 5 })
619
- df ["cc" ] = 0.0
615
+ with pd .option_context ("chained_assignment" , None ):
616
+ df = DataFrame ({"aa" : range (5 ), "bb" : [2.2 ] * 5 })
617
+ df ["cc" ] = 0.0
618
+
619
+ ck = [True ] * len (df )
620
620
621
- ck = [ True ] * len ( df )
621
+ df [ "bb" ]. iloc [ 0 ] = 0.13
622
622
623
- df ["bb" ].iloc [0 ] = 0.13
623
+ # TODO: unused
624
+ df_tmp = df .iloc [ck ] # noqa
624
625
625
- # TODO: unused
626
- df_tmp = df .iloc [ck ] # noqa
626
+ df [ "bb" ]. iloc [ 0 ] = 0.15
627
+ assert df [ "bb" ] .iloc [0 ] == 0.15
627
628
628
- df ["bb" ].iloc [0 ] = 0.15
629
- assert df ["bb" ].iloc [0 ] == 0.15
630
- pd .set_option ("chained_assignment" , "raise" )
631
629
630
+ def test_setitem_with_expansion_dtype ():
632
631
# GH 3217
633
632
df = DataFrame ({"a" : [1 , 3 ], "b" : [np .nan , 2 ]})
634
633
df ["c" ] = np .nan
@@ -663,17 +662,27 @@ def test_type_promote_putmask():
663
662
left [mask ] = right
664
663
tm .assert_series_equal (left , ts .map (lambda t : str (t ) if t > 0 else t ))
665
664
666
- s = Series ([0 , 1 , 2 , 0 ])
667
- mask = s > 0
668
- s2 = s [mask ].map (str )
669
- s [mask ] = s2
670
- tm .assert_series_equal (s , Series ([0 , "1" , "2" , 0 ]))
671
665
672
- s = Series ([0 , "foo" , "bar" , 0 ])
666
+ def test_setitem_mask_promote_strs ():
667
+
668
+ ser = Series ([0 , 1 , 2 , 0 ])
669
+ mask = ser > 0
670
+ ser2 = ser [mask ].map (str )
671
+ ser [mask ] = ser2
672
+
673
+ expected = Series ([0 , "1" , "2" , 0 ])
674
+ tm .assert_series_equal (ser , expected )
675
+
676
+
677
+ def test_setitem_mask_promote ():
678
+
679
+ ser = Series ([0 , "foo" , "bar" , 0 ])
673
680
mask = Series ([False , True , True , False ])
674
- s2 = s [mask ]
675
- s [mask ] = s2
676
- tm .assert_series_equal (s , Series ([0 , "foo" , "bar" , 0 ]))
681
+ ser2 = ser [mask ]
682
+ ser [mask ] = ser2
683
+
684
+ expected = Series ([0 , "foo" , "bar" , 0 ])
685
+ tm .assert_series_equal (ser , expected )
677
686
678
687
679
688
def test_multilevel_preserve_name ():
@@ -716,16 +725,8 @@ def test_getitem_unrecognized_scalar():
716
725
assert result == 2
717
726
718
727
719
- @pytest .mark .parametrize (
720
- "index" ,
721
- [
722
- date_range ("2014-01-01" , periods = 20 , freq = "MS" ),
723
- period_range ("2014-01" , periods = 20 , freq = "M" ),
724
- timedelta_range ("0" , periods = 20 , freq = "H" ),
725
- ],
726
- )
727
728
def test_slice_with_zero_step_raises (index , frame_or_series , indexer_sli ):
728
- ts = frame_or_series (np .arange (20 ), index = index )
729
+ ts = frame_or_series (np .arange (len ( index ) ), index = index )
729
730
730
731
with pytest .raises (ValueError , match = "slice step cannot be zero" ):
731
732
indexer_sli (ts )[::0 ]
0 commit comments