From 223b8d8b13ffb4931311ea1f2e4f5e200c98119d Mon Sep 17 00:00:00 2001
From: Bert Palm <bert.palm@ufz.de>
Date: Thu, 19 Mar 2020 22:10:12 +0100
Subject: [PATCH] fixed wrong dtype when use copy_empty

---
 dios/dios.py | 26 +++++++++++++++-----------
 1 file changed, 15 insertions(+), 11 deletions(-)

diff --git a/dios/dios.py b/dios/dios.py
index 46a0f17..66583cb 100644
--- a/dios/dios.py
+++ b/dios/dios.py
@@ -479,19 +479,23 @@ class DictOfSeries:
         return self.copy(deep=True)
 
     def copy(self, deep=True):
-        if not deep:
-            return DictOfSeries(data=self._data, itype=self._itype, cast_policy=self._policy, fastpath=True)
-
-        new = DictOfSeries(itype=self.itype, columns=self.columns, cast_policy=self._policy, fastpath=True)
-        for c in self.columns:
-            new._data.at[c] = self._data.at[c].copy(deep=True)
-        return new
+        if deep:
+            data = pd.Series(dtype='O', index=self.columns)
+            for c in self.columns:
+                data.at[c] = self._data.at[c].copy(deep=True)
+        else:
+            data = self._data
+        kws = dict(itype=self._itype, cast_policy=self._policy)
+        return DictOfSeries(data=data, fastpath=True, **kws)
 
     def copy_empty(self, columns=True):
-        return DictOfSeries(columns=self.columns if columns is True else None,  # correct
-                            itype=self.itype,
-                            cast_policy=self._policy,
-                            fastpath=True)
+        data = None
+        if columns is True:  # is correct
+            data = pd.Series(dtype='O', index=self.columns)
+            for c in self.columns:
+                data.at[c] = pd.Series(dtype=self._data.at[c].dtype)
+        kws = dict(itype=self._itype, cast_policy=self._policy)
+        return DictOfSeries(data=data, fastpath=True, **kws)
 
     def __str__(self):
         return self.__repr__()
-- 
GitLab