1- from collections import OrderedDict
21import pydoc
32import warnings
43
2524import pandas ._testing as tm
2625from pandas .core .arrays import PeriodArray
2726
28- import pandas .io .formats .printing as printing
29-
3027
3128class TestSeriesMisc :
32- def test_scalarop_preserve_name (self , datetime_series ):
33- result = datetime_series * 2
34- assert result .name == datetime_series .name
35-
36- def test_copy_name (self , datetime_series ):
37- result = datetime_series .copy ()
38- assert result .name == datetime_series .name
39-
40- def test_copy_index_name_checking (self , datetime_series ):
41- # don't want to be able to modify the index stored elsewhere after
42- # making a copy
43-
44- datetime_series .index .name = None
45- assert datetime_series .index .name is None
46- assert datetime_series is datetime_series
47-
48- cp = datetime_series .copy ()
49- cp .index .name = "foo"
50- printing .pprint_thing (datetime_series .index .name )
51- assert datetime_series .index .name is None
52-
5329 def test_append_preserve_name (self , datetime_series ):
5430 result = datetime_series [:5 ].append (datetime_series [5 :])
5531 assert result .name == datetime_series .name
5632
57- def test_binop_maybe_preserve_name (self , datetime_series ):
58- # names match, preserve
59- result = datetime_series * datetime_series
60- assert result .name == datetime_series .name
61- result = datetime_series .mul (datetime_series )
62- assert result .name == datetime_series .name
63-
64- result = datetime_series * datetime_series [:- 2 ]
65- assert result .name == datetime_series .name
66-
67- # names don't match, don't preserve
68- cp = datetime_series .copy ()
69- cp .name = "something else"
70- result = datetime_series + cp
71- assert result .name is None
72- result = datetime_series .add (cp )
73- assert result .name is None
74-
75- ops = ["add" , "sub" , "mul" , "div" , "truediv" , "floordiv" , "mod" , "pow" ]
76- ops = ops + ["r" + op for op in ops ]
77- for op in ops :
78- # names match, preserve
79- s = datetime_series .copy ()
80- result = getattr (s , op )(s )
81- assert result .name == datetime_series .name
82-
83- # names don't match, don't preserve
84- cp = datetime_series .copy ()
85- cp .name = "changed"
86- result = getattr (s , op )(cp )
87- assert result .name is None
88-
8933 def test_getitem_preserve_name (self , datetime_series ):
9034 result = datetime_series [datetime_series > 0 ]
9135 assert result .name == datetime_series .name
@@ -111,73 +55,6 @@ def _pickle_roundtrip(self, obj):
11155 unpickled = pd .read_pickle (path )
11256 return unpickled
11357
114- def test_constructor_dict (self ):
115- d = {"a" : 0.0 , "b" : 1.0 , "c" : 2.0 }
116- result = Series (d )
117- expected = Series (d , index = sorted (d .keys ()))
118- tm .assert_series_equal (result , expected )
119-
120- result = Series (d , index = ["b" , "c" , "d" , "a" ])
121- expected = Series ([1 , 2 , np .nan , 0 ], index = ["b" , "c" , "d" , "a" ])
122- tm .assert_series_equal (result , expected )
123-
124- def test_constructor_subclass_dict (self , dict_subclass ):
125- data = dict_subclass ((x , 10.0 * x ) for x in range (10 ))
126- series = Series (data )
127- expected = Series (dict (data .items ()))
128- tm .assert_series_equal (series , expected )
129-
130- def test_constructor_ordereddict (self ):
131- # GH3283
132- data = OrderedDict ((f"col{ i } " , np .random .random ()) for i in range (12 ))
133-
134- series = Series (data )
135- expected = Series (list (data .values ()), list (data .keys ()))
136- tm .assert_series_equal (series , expected )
137-
138- # Test with subclass
139- class A (OrderedDict ):
140- pass
141-
142- series = Series (A (data ))
143- tm .assert_series_equal (series , expected )
144-
145- def test_constructor_dict_multiindex (self ):
146- d = {("a" , "a" ): 0.0 , ("b" , "a" ): 1.0 , ("b" , "c" ): 2.0 }
147- _d = sorted (d .items ())
148- result = Series (d )
149- expected = Series (
150- [x [1 ] for x in _d ], index = pd .MultiIndex .from_tuples ([x [0 ] for x in _d ])
151- )
152- tm .assert_series_equal (result , expected )
153-
154- d ["z" ] = 111.0
155- _d .insert (0 , ("z" , d ["z" ]))
156- result = Series (d )
157- expected = Series (
158- [x [1 ] for x in _d ], index = Index ([x [0 ] for x in _d ], tupleize_cols = False )
159- )
160- result = result .reindex (index = expected .index )
161- tm .assert_series_equal (result , expected )
162-
163- def test_constructor_dict_timedelta_index (self ):
164- # GH #12169 : Resample category data with timedelta index
165- # construct Series from dict as data and TimedeltaIndex as index
166- # will result NaN in result Series data
167- expected = Series (
168- data = ["A" , "B" , "C" ], index = pd .to_timedelta ([0 , 10 , 20 ], unit = "s" )
169- )
170-
171- result = Series (
172- data = {
173- pd .to_timedelta (0 , unit = "s" ): "A" ,
174- pd .to_timedelta (10 , unit = "s" ): "B" ,
175- pd .to_timedelta (20 , unit = "s" ): "C" ,
176- },
177- index = pd .to_timedelta ([0 , 10 , 20 ], unit = "s" ),
178- )
179- tm .assert_series_equal (result , expected )
180-
18158 def test_sparse_accessor_updates_on_inplace (self ):
18259 s = Series ([1 , 1 , 2 , 3 ], dtype = "Sparse[int]" )
18360 return_value = s .drop ([0 , 1 ], inplace = True )
@@ -324,55 +201,6 @@ def test_raise_on_info(self):
324201 with pytest .raises (AttributeError , match = msg ):
325202 s .info ()
326203
327- def test_copy (self ):
328-
329- for deep in [None , False , True ]:
330- s = Series (np .arange (10 ), dtype = "float64" )
331-
332- # default deep is True
333- if deep is None :
334- s2 = s .copy ()
335- else :
336- s2 = s .copy (deep = deep )
337-
338- s2 [::2 ] = np .NaN
339-
340- if deep is None or deep is True :
341- # Did not modify original Series
342- assert np .isnan (s2 [0 ])
343- assert not np .isnan (s [0 ])
344- else :
345- # we DID modify the original Series
346- assert np .isnan (s2 [0 ])
347- assert np .isnan (s [0 ])
348-
349- def test_copy_tzaware (self ):
350- # GH#11794
351- # copy of tz-aware
352- expected = Series ([Timestamp ("2012/01/01" , tz = "UTC" )])
353- expected2 = Series ([Timestamp ("1999/01/01" , tz = "UTC" )])
354-
355- for deep in [None , False , True ]:
356-
357- s = Series ([Timestamp ("2012/01/01" , tz = "UTC" )])
358-
359- if deep is None :
360- s2 = s .copy ()
361- else :
362- s2 = s .copy (deep = deep )
363-
364- s2 [0 ] = pd .Timestamp ("1999/01/01" , tz = "UTC" )
365-
366- # default deep is True
367- if deep is None or deep is True :
368- # Did not modify original Series
369- tm .assert_series_equal (s2 , expected2 )
370- tm .assert_series_equal (s , expected )
371- else :
372- # we DID modify the original Series
373- tm .assert_series_equal (s2 , expected2 )
374- tm .assert_series_equal (s , expected2 )
375-
376204 def test_axis_alias (self ):
377205 s = Series ([1 , 2 , np .nan ])
378206 tm .assert_series_equal (s .dropna (axis = "rows" ), s .dropna (axis = "index" ))
0 commit comments