Skip to content

Commit 8075f54

Browse files
changhiskhanwesm
authored andcommitted
BUG: Series.diff for integer dtypes #2087
1 parent 18788f4 commit 8075f54

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

pandas/core/series.py

+16-1
Original file line numberDiff line numberDiff line change
@@ -1511,7 +1511,22 @@ def diff(self, periods=1):
15111511
-------
15121512
diffed : Series
15131513
"""
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)
15151530

15161531
def autocorr(self):
15171532
"""

pandas/tests/test_series.py

+8
Original file line numberDiff line numberDiff line change
@@ -2998,6 +2998,14 @@ def test_diff(self):
29982998
# Just run the function
29992999
self.ts.diff()
30003000

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+
30013009
def test_pct_change(self):
30023010
rs = self.ts.pct_change(fill_method=None)
30033011
assert_series_equal(rs, self.ts / self.ts.shift(1) - 1)

0 commit comments

Comments
 (0)