Skip to content

Commit 3758a9b

Browse files
committed
BUG: set index of DataFrame.apply(f) when f returns dict (pandas-dev#37544)
1 parent 1c2de61 commit 3758a9b

File tree

2 files changed

+15
-8
lines changed

2 files changed

+15
-8
lines changed

pandas/core/apply.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -362,8 +362,10 @@ def wrap_results_for_axis(
362362
isinstance(x, dict) for x in results.values()
363363
):
364364
# Our operation was a to_dict op e.g.
365-
# test_apply_dict GH#8735, test_apply_reduce_rows_to_dict GH#25196
366-
return self.obj._constructor_sliced(results)
365+
# test_apply_dict GH#8735, test_apply_reduce_to_dict GH#25196 #37544
366+
res = self.obj._constructor_sliced(results)
367+
res.index = res_index
368+
return res
367369

368370
try:
369371
result = self.obj._constructor(data=results)

pandas/tests/frame/apply/test_frame_apply.py

+11-6
Original file line numberDiff line numberDiff line change
@@ -356,12 +356,17 @@ def test_apply_reduce_Series(self, float_frame):
356356
result = float_frame.apply(np.mean, axis=1)
357357
tm.assert_series_equal(result, expected)
358358

359-
def test_apply_reduce_rows_to_dict(self):
360-
# GH 25196
361-
data = DataFrame([[1, 2], [3, 4]])
362-
expected = Series([{0: 1, 1: 3}, {0: 2, 1: 4}])
363-
result = data.apply(dict)
364-
tm.assert_series_equal(result, expected)
359+
def test_apply_reduce_to_dict(self):
360+
# GH 25196 37544
361+
data = DataFrame([[1, 2], [3, 4]], columns=["c0", "c1"], index=["i0", "i1"])
362+
363+
result0 = data.apply(dict, axis=0)
364+
expected0 = Series([{"i0": 1, "i1": 3}, {"i0": 2, "i1": 4}], index=data.columns)
365+
tm.assert_series_equal(result0, expected0)
366+
367+
result1 = data.apply(dict, axis=1)
368+
expected1 = Series([{"c0": 1, "c1": 2}, {"c0": 3, "c1": 4}], index=data.index)
369+
tm.assert_series_equal(result1, expected1)
365370

366371
def test_apply_differently_indexed(self):
367372
df = DataFrame(np.random.randn(20, 10))

0 commit comments

Comments
 (0)