Skip to content

Commit 73661c1

Browse files
committed
BUG: implement Series.repeat to get expected results, close #1229
1 parent 441d6e8 commit 73661c1

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

pandas/core/series.py

+8
Original file line numberDiff line numberDiff line change
@@ -609,6 +609,14 @@ def astype(self, dtype):
609609
casted = com._astype_nansafe(self.values, dtype)
610610
return self._constructor(casted, index=self.index, name=self.name)
611611

612+
def repeat(self, reps):
613+
"""
614+
See ndarray.repeat
615+
"""
616+
new_index = self.index.repeat(reps)
617+
new_values = self.values.repeat(reps)
618+
return Series(new_values, index=new_index, name=self.name)
619+
612620
def reshape(self, newshape, order='C'):
613621
"""
614622
See numpy.ndarray.reshape

pandas/tests/test_series.py

+13
Original file line numberDiff line numberDiff line change
@@ -2647,6 +2647,19 @@ def test_timeseries_coercion(self):
26472647
self.assert_(isinstance(ser, TimeSeries))
26482648
self.assert_(isinstance(ser.index, DatetimeIndex))
26492649

2650+
def test_repeat(self):
2651+
s = Series(np.random.randn(3), index=['a', 'b', 'c'])
2652+
2653+
reps = s.repeat(5)
2654+
exp = Series(s.values.repeat(5), index=s.index.values.repeat(5))
2655+
assert_series_equal(reps, exp)
2656+
2657+
to_rep = [2, 3, 4]
2658+
reps = s.repeat(to_rep)
2659+
exp = Series(s.values.repeat(to_rep),
2660+
index=s.index.values.repeat(to_rep))
2661+
assert_series_equal(reps, exp)
2662+
26502663
if __name__ == '__main__':
26512664
nose.runmodule(argv=[__file__,'-vvs','-x','--pdb', '--pdb-failure'],
26522665
exit=False)

0 commit comments

Comments
 (0)