1
- from collections import OrderedDict
2
1
import pydoc
3
2
import warnings
4
3
25
24
import pandas ._testing as tm
26
25
from pandas .core .arrays import PeriodArray
27
26
28
- import pandas .io .formats .printing as printing
29
-
30
27
31
28
class 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
-
53
29
def test_append_preserve_name (self , datetime_series ):
54
30
result = datetime_series [:5 ].append (datetime_series [5 :])
55
31
assert result .name == datetime_series .name
56
32
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
-
89
33
def test_getitem_preserve_name (self , datetime_series ):
90
34
result = datetime_series [datetime_series > 0 ]
91
35
assert result .name == datetime_series .name
@@ -111,73 +55,6 @@ def _pickle_roundtrip(self, obj):
111
55
unpickled = pd .read_pickle (path )
112
56
return unpickled
113
57
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
-
181
58
def test_sparse_accessor_updates_on_inplace (self ):
182
59
s = Series ([1 , 1 , 2 , 3 ], dtype = "Sparse[int]" )
183
60
return_value = s .drop ([0 , 1 ], inplace = True )
@@ -324,55 +201,6 @@ def test_raise_on_info(self):
324
201
with pytest .raises (AttributeError , match = msg ):
325
202
s .info ()
326
203
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
-
376
204
def test_axis_alias (self ):
377
205
s = Series ([1 , 2 , np .nan ])
378
206
tm .assert_series_equal (s .dropna (axis = "rows" ), s .dropna (axis = "index" ))
0 commit comments