File tree 2 files changed +15
-7
lines changed
2 files changed +15
-7
lines changed Original file line number Diff line number Diff line change @@ -3180,14 +3180,15 @@ def interpolate(self, method='linear'):
3180
3180
invalid = isnull (values )
3181
3181
valid = - invalid
3182
3182
3183
- firstIndex = valid .argmax ()
3184
- valid = valid [firstIndex :]
3185
- invalid = invalid [firstIndex :]
3186
- inds = inds [firstIndex :]
3187
-
3188
3183
result = values .copy ()
3189
- result [firstIndex :][invalid ] = np .interp (inds [invalid ], inds [valid ],
3190
- values [firstIndex :][valid ])
3184
+ if valid .any ():
3185
+ firstIndex = valid .argmax ()
3186
+ valid = valid [firstIndex :]
3187
+ invalid = invalid [firstIndex :]
3188
+ inds = inds [firstIndex :]
3189
+
3190
+ result [firstIndex :][invalid ] = np .interp (
3191
+ inds [invalid ], inds [valid ], values [firstIndex :][valid ])
3191
3192
3192
3193
return Series (result , index = self .index , name = self .name )
3193
3194
Original file line number Diff line number Diff line change @@ -4007,6 +4007,13 @@ def test_interpolate(self):
4007
4007
# try time interpolation on a non-TimeSeries
4008
4008
self .assertRaises (Exception , self .series .interpolate , method = 'time' )
4009
4009
4010
+ def test_interpolate_corners (self ):
4011
+ s = Series ([np .nan , np .nan ])
4012
+ assert_series_equal (s .interpolate (), s )
4013
+
4014
+ s = Series ([]).interpolate ()
4015
+ assert_series_equal (s .interpolate (), s )
4016
+
4010
4017
def test_interpolate_index_values (self ):
4011
4018
s = Series (np .nan , index = np .sort (np .random .rand (30 )))
4012
4019
s [::3 ] = np .random .randn (10 )
You can’t perform that action at this time.
0 commit comments