File tree 2 files changed +24
-1
lines changed
2 files changed +24
-1
lines changed Original file line number Diff line number Diff line change @@ -1511,7 +1511,22 @@ def diff(self, periods=1):
1511
1511
-------
1512
1512
diffed : Series
1513
1513
"""
1514
- return (self - self .shift (periods ))
1514
+ if com .is_integer_dtype (self ):
1515
+ new_values = np .empty (len (self ), dtype = self .dtype )
1516
+ new_values = _maybe_upcast (new_values )
1517
+
1518
+ if periods > 0 :
1519
+ new_values [periods :] = (self .values [periods :] -
1520
+ self .values [:- periods ])
1521
+ new_values [:periods ] = nan
1522
+ elif periods < 0 :
1523
+ new_values [:periods ] = (self .values [:periods ] -
1524
+ self .values [- periods :])
1525
+ new_values [periods :] = nan
1526
+
1527
+ return Series (new_values , index = self .index , name = self .name )
1528
+ else :
1529
+ return self - self .shift (periods )
1515
1530
1516
1531
def autocorr (self ):
1517
1532
"""
Original file line number Diff line number Diff line change @@ -2998,6 +2998,14 @@ def test_diff(self):
2998
2998
# Just run the function
2999
2999
self .ts .diff ()
3000
3000
3001
+ # int dtype
3002
+ a = 10000000000000000
3003
+ b = a + 1
3004
+ s = Series ([a , b ])
3005
+
3006
+ rs = s .diff ()
3007
+ self .assertEqual (rs [1 ], 1 )
3008
+
3001
3009
def test_pct_change (self ):
3002
3010
rs = self .ts .pct_change (fill_method = None )
3003
3011
assert_series_equal (rs , self .ts / self .ts .shift (1 ) - 1 )
You can’t perform that action at this time.
0 commit comments