Description
BUG DESCRIPTION:
length_of_indexer() (defined in pandas/core/indexing.py) returns incorrect result
if (stop-start) is not divisible by step. As a consequence some slice assignments
throw exceptions. Affected panda versions: 0.16.x, 0.15.x, current git master.
HOW TO REPRODUCE:
import pandas as pd
sr= pd.Series([-1]*6) # series with 6 elements indexed from 0 to 5.
sr[0::2]= [0,2,4] # setting even elements works fine!
sr[1::2]= [1,3,5] # setting odd elements results in error:
.../pandas/core/internals.pyc in setitem(self, indexer, value)
568 if is_list_like(value) and l:
569 if len(value) != length_of_indexer(indexer, values):
--> 570 raise ValueError("cannot set using a slice indexer with a "
571 "different length than the value")
572
ValueError: cannot set using a slice indexer with a different length than the value
BUG FIX: I fixed the bug (and created a new test case for it) in my private repo
and will submit a pull request shortly.