Skip to content

Commit e4015e7

Browse files
jbrockmendelukarroum
authored andcommitted
REF: helper to ensure column indexer is iterable (pandas-dev#37475)
1 parent fb86ec4 commit e4015e7

File tree

1 file changed

+15
-4
lines changed

1 file changed

+15
-4
lines changed

pandas/core/indexing.py

+15-4
Original file line numberDiff line numberDiff line change
@@ -1648,10 +1648,7 @@ def _setitem_with_indexer(self, indexer, value):
16481648
labels = item_labels[info_idx]
16491649

16501650
# Ensure we have something we can iterate over
1651-
ilocs = info_idx
1652-
if isinstance(info_idx, slice):
1653-
ri = Index(range(len(self.obj.columns)))
1654-
ilocs = ri[info_idx]
1651+
ilocs = self._ensure_iterable_column_indexer(indexer[1])
16551652

16561653
plane_indexer = indexer[:1]
16571654
lplane_indexer = length_of_indexer(plane_indexer[0], self.obj.index)
@@ -1900,6 +1897,20 @@ def _setitem_with_indexer_missing(self, indexer, value):
19001897
self.obj._mgr = self.obj.append(value)._mgr
19011898
self.obj._maybe_update_cacher(clear=True)
19021899

1900+
def _ensure_iterable_column_indexer(self, column_indexer):
1901+
"""
1902+
Ensure that our column indexer is something that can be iterated over.
1903+
"""
1904+
# Ensure we have something we can iterate over
1905+
if is_integer(column_indexer):
1906+
ilocs = [column_indexer]
1907+
elif isinstance(column_indexer, slice):
1908+
ri = Index(range(len(self.obj.columns)))
1909+
ilocs = ri[column_indexer]
1910+
else:
1911+
ilocs = column_indexer
1912+
return ilocs
1913+
19031914
def _align_series(self, indexer, ser: "Series", multiindex_indexer: bool = False):
19041915
"""
19051916
Parameters

0 commit comments

Comments
 (0)