diff --git a/dios/dios.py b/dios/dios.py index 66583cbc25260b96dd3644a06942b4260a173218..d1d182e7e23122bc11f23c6889a97274ec5d6496 100644 --- a/dios/dios.py +++ b/dios/dios.py @@ -97,7 +97,7 @@ class DictOfSeries: self._data = pd.Series(dtype='O', index=index.unique()) if data is not None: - self._init_insert_data(data, columns) + self._init_insert_data(data) # self._data contain nans at locations, where no # data was present, but a column-name was given @@ -116,23 +116,29 @@ class DictOfSeries: self._data.name = '_data' self._data.index.name = 'columns' - def _init_insert_data(self, data, columns): + def _init_insert_data(self, data): """ Insert items of a iterable in self""" data = list(data) if _is_iterator(data) else data + cols_empty = self.columns.empty if isinstance(data, dict) or _is_dios_like(data): for k in data: - if columns is None or k in self.columns: + if cols_empty or k in self.columns: self._insert(k, data[k]) elif isinstance(data, pd.Series): - self._insert(data.name or 0, data) + name = data.name or 0 + if not cols_empty: + # overwrite by columns + if data.name is None or data.name not in self.columns: + name = self.columns[0] + self._insert(name, data) elif _is_list_like(data): data = data if _is_nested_list_like(data) else [data] - if self.columns.empty: + if cols_empty: self._data = pd.Series(dtype='O', index=pd.RangeIndex(len(data))) elif len(data) != len(self.columns):