# Buggy code
def _call_input_1d_tileables(self, input_1d_tileables, index, columns):
    tileables = []
    shape = None
    for tileable in input_1d_tileables.values():
        tileable_shape = astensor(tileable).shape
        if len(tileable_shape) > 0:
            if shape is None:
                shape = tileable_shape
            elif shape != tileable_shape:
                raise ValueError("input 1-d tensors should have same shape")

        if isinstance(tileable, (Base, Entity)):
            tileables.append(tileable)

    if index is not None:
        if tileables[0].shape[0] != len(index):
            raise ValueError(
                f"index {index} should have the same shape with tensor: {input_1d_tileables[0].shape[0]}"
            )
        index_value = self._process_index(index, tileables)
    else:
        index_value = parse_index(pd.RangeIndex(0, tileables[0].shape[0]))

    if columns is not None:
        if len(input_1d_tileables) != len(columns):
            raise ValueError(
                f"columns {columns} should have size {len(input_1d_tileables)}"
            )
        if not isinstance(columns, pd.Index):
            if isinstance(columns, Base):
                raise NotImplementedError("The columns value cannot be a tileable")
            columns = pd.Index(columns)
        columns_value = parse_index(columns, store_data=True)
    else:
        columns_value = parse_index(
            pd.RangeIndex(0, len(input_1d_tileables)), store_data=True
        )

    shape = (shape[0], len(input_1d_tileables))
    return self.new_dataframe(
        tileables,
        shape,
        dtypes=self.dtypes,
        index_value=index_value,
        columns_value=columns_value,
    )


# Traceback (NotImplementedError)
In [52]: df = md.DataFrame(index=[1, 2, 3])

In [53]: df['a'] = md.Series(['a', 'b', 'c'], index=[2, 3, 4])
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
<ipython-input-53-f550a59ef82c> in <module>
----> 1 df['a'] = md.Series(['a', 'b', 'c'], index=[2, 3, 4])

~/Workspace/mars/mars/dataframe/indexing/setitem.py in dataframe_setitem(df, col, value)
182 def dataframe_setitem(df, col, value):
183     op = DataFrameSetitem(target=df, indexes=col, value=value)
--> 184     return op(df, value)

~/Workspace/mars/mars/utils.py in _inner(*args, **kwargs)
457         @functools.wraps(func)
458         def _inner(*args, **kwargs):
--> 459             with self:
460                 return func(*args, **kwargs)
461

~/Workspace/mars/mars/dataframe/indexing/setitem.py in __call__(self, target, value)
83
84             if value.index_value.key != target.index_value.key:  # pragma: no cover
---> 85                 raise NotImplementedError('Does not support setting value '
86                                           'with different index for now')
87

NotImplementedError: Does not support setting value with different index for now

# Fixed code
def _call_input_1d_tileables(self, input_1d_tileables, index, columns):
    tileables = []
    shape = None
    for tileable in input_1d_tileables.values():
        tileable_shape = astensor(tileable).shape
        if len(tileable_shape) > 0:
            if shape is None:
                shape = tileable_shape
            elif shape != tileable_shape:
                raise ValueError("input 1-d tensors should have same shape")

        if isinstance(tileable, (Base, Entity)):
            tileables.append(tileable)

    if index is not None:
        tileable_size = tileables[0].shape[0]
        if hasattr(index, "shape"):
            index_size = index.shape[0]
        else:
            index_size = len(index)
        if (
            not pd.isna(tileable_size)
            and not pd.isna(index_size)
            and tileable_size != index_size
        ):
            raise ValueError(
                f"index {index} should have the same shape with tensor: {tileable_size}"
            )
        index_value = self._process_index(index, tileables)
    else:
        index_value = parse_index(pd.RangeIndex(0, tileables[0].shape[0]))

    if columns is not None:
        if len(input_1d_tileables) != len(columns):
            raise ValueError(
                f"columns {columns} should have size {len(input_1d_tileables)}"
            )
        if not isinstance(columns, pd.Index):
            if isinstance(columns, Base):
                raise NotImplementedError("The columns value cannot be a tileable")
            columns = pd.Index(columns)
        columns_value = parse_index(columns, store_data=True)
    else:
        columns_value = parse_index(
            pd.RangeIndex(0, len(input_1d_tileables)), store_data=True
        )

    shape = (shape[0], len(input_1d_tileables))
    return self.new_dataframe(
        tileables,
        shape,
        dtypes=self.dtypes,
        index_value=index_value,
        columns_value=columns_value,
    )