@@ -1484,7 +1484,7 @@ class _ScalarAccessIndexer(_NDFrameIndexer):
14841484
14851485 """ access scalars quickly """
14861486
1487- def _convert_key (self , key ):
1487+ def _convert_key (self , key , is_setter = False ):
14881488 return list (key )
14891489
14901490 def __getitem__ (self , key ):
@@ -1505,7 +1505,7 @@ def __setitem__(self, key, value):
15051505 if len (key ) != self .obj .ndim :
15061506 raise ValueError ('Not enough indexers for scalar access '
15071507 '(setting)!' )
1508- key = list (self ._convert_key (key ))
1508+ key = list (self ._convert_key (key , is_setter = True ))
15091509 key .append (value )
15101510 self .obj .set_value (* key , takeable = self ._takeable )
15111511
@@ -1515,8 +1515,13 @@ class _AtIndexer(_ScalarAccessIndexer):
15151515 """ label based scalar accessor """
15161516 _takeable = False
15171517
1518- def _convert_key (self , key ):
1518+ def _convert_key (self , key , is_setter = False ):
15191519 """ require they keys to be the same type as the index (so we don't fallback) """
1520+
1521+ # allow arbitrary setting
1522+ if is_setter :
1523+ return list (key )
1524+
15201525 for ax , i in zip (self .obj .axes , key ):
15211526 if ax .is_integer ():
15221527 if not com .is_integer (i ):
@@ -1536,7 +1541,7 @@ class _iAtIndexer(_ScalarAccessIndexer):
15361541 def _has_valid_setitem_indexer (self , indexer ):
15371542 self ._has_valid_positional_setitem_indexer (indexer )
15381543
1539- def _convert_key (self , key ):
1544+ def _convert_key (self , key , is_setter = False ):
15401545 """ require integer args (and convert to label arguments) """
15411546 for a , i in zip (self .obj .axes , key ):
15421547 if not com .is_integer (i ):
0 commit comments