Skip to content

Commit 7648a8d

Browse files
REF: remove internal Block usage from FrameColumnApply (#40166)
1 parent 7be41ca commit 7648a8d

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

pandas/core/apply.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -883,9 +883,8 @@ def series_generator(self):
883883
# of it. Kids: don't do this at home.
884884
ser = self.obj._ixs(0, axis=0)
885885
mgr = ser._mgr
886-
blk = mgr.blocks[0]
887886

888-
if is_extension_array_dtype(blk.dtype):
887+
if is_extension_array_dtype(ser.dtype):
889888
# values will be incorrect for this block
890889
# TODO(EA2D): special case would be unnecessary with 2D EAs
891890
obj = self.obj
@@ -896,7 +895,7 @@ def series_generator(self):
896895
for (arr, name) in zip(values, self.index):
897896
# GH#35462 re-pin mgr in case setitem changed it
898897
ser._mgr = mgr
899-
blk.values = arr
898+
mgr.set_values(arr)
900899
ser.name = name
901900
yield ser
902901

pandas/core/internals/managers.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1646,6 +1646,15 @@ def fast_xs(self, loc):
16461646
"""
16471647
raise NotImplementedError("Use series._values[loc] instead")
16481648

1649+
def set_values(self, values: ArrayLike):
1650+
"""
1651+
Set the values of the single block in place.
1652+
1653+
Use at your own risk! This does not check if the passed values are
1654+
valid for the current Block/SingleBlockManager (length, dtype, etc).
1655+
"""
1656+
self.blocks[0].values = values
1657+
16491658

16501659
# --------------------------------------------------------------------
16511660
# Constructor Helpers

0 commit comments

Comments
 (0)