Skip to content

Commit e8fc1c0

Browse files
committed
BUG: imprecise logic leading to malformed Series in Series.apply, close #1183
1 parent 09736e5 commit e8fc1c0

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

pandas/core/series.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1872,8 +1872,10 @@ def apply(self, func):
18721872
"""
18731873
try:
18741874
result = func(self)
1875-
if not isinstance(result, Series):
1875+
if isinstance(result, np.ndarray):
18761876
result = Series(result, index=self.index, name=self.name)
1877+
else:
1878+
raise ValueError('Must yield array')
18771879
return result
18781880
except Exception:
18791881
mapped = lib.map_infer(self.values, func)

pandas/tests/test_series.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2069,6 +2069,19 @@ def test_apply(self):
20692069
result = self.ts.apply(lambda x: x.values * 2)
20702070
assert_series_equal(result, self.ts * 2)
20712071

2072+
def test_apply_same_length_inference_bug(self):
2073+
s = Series([1, 2])
2074+
f = lambda x: (x, x + 1)
2075+
2076+
result = s.apply(f)
2077+
expected = s.map(f)
2078+
assert_series_equal(result, expected)
2079+
2080+
s = Series([1, 2, 3])
2081+
result = s.apply(f)
2082+
expected = s.map(f)
2083+
assert_series_equal(result, expected)
2084+
20722085
def test_align(self):
20732086
def _check_align(a, b, how='left', fill=None):
20742087
aa, ab = a.align(b, join=how, fill_value=fill)

0 commit comments

Comments
 (0)