Explorar o código

fix: support pandas series signature in _convert_data_to_dataframe()

trgiangdo hai 11 meses
pai
achega
56a1590256
Modificáronse 2 ficheiros con 13 adicións e 7 borrados
  1. 4 4
      taipy/core/data/parquet.py
  2. 9 3
      taipy/core/data/sql_table.py

+ 4 - 4
taipy/core/data/parquet.py

@@ -214,10 +214,10 @@ class ParquetDataNode(DataNode, _FileDataNodeMixin, _TabularDataNodeMixin):
         }
         }
         kwargs.update(self.properties[self.__WRITE_KWARGS_PROPERTY])
         kwargs.update(self.properties[self.__WRITE_KWARGS_PROPERTY])
         kwargs.update(write_kwargs)
         kwargs.update(write_kwargs)
-        if isinstance(data, pd.Series):
-            df = pd.DataFrame(data)
-        else:
-            df = self._convert_data_to_dataframe(self.properties[self._EXPOSED_TYPE_PROPERTY], data)
+
+        df = self._convert_data_to_dataframe(self.properties[self._EXPOSED_TYPE_PROPERTY], data)
+        if isinstance(df, pd.Series):
+            df = pd.DataFrame(df)
 
 
         # Ensure that the columns are strings, otherwise writing will fail with pandas 1.3.5
         # Ensure that the columns are strings, otherwise writing will fail with pandas 1.3.5
         df.columns = df.columns.astype(str)
         df.columns = df.columns.astype(str)

+ 9 - 3
taipy/core/data/sql_table.py

@@ -10,7 +10,7 @@
 # specific language governing permissions and limitations under the License.
 # specific language governing permissions and limitations under the License.
 
 
 from datetime import datetime, timedelta
 from datetime import datetime, timedelta
-from typing import Any, Dict, List, Optional, Set
+from typing import Any, Dict, List, Optional, Set, Union
 
 
 import pandas as pd
 import pandas as pd
 from sqlalchemy import MetaData, Table
 from sqlalchemy import MetaData, Table
@@ -146,8 +146,14 @@ class SQLTableDataNode(_AbstractSQLDataNode):
         connection.execute(table.insert(), data)
         connection.execute(table.insert(), data)
 
 
     @classmethod
     @classmethod
-    def __insert_dataframe(cls, df: pd.DataFrame, table: Any, connection: Any, delete_table: bool) -> None:
-        cls.__insert_dicts(df.to_dict(orient="records"), table, connection, delete_table)
+    def __insert_dataframe(
+        cls, df: Union[pd.DataFrame, pd.Series], table: Any, connection: Any, delete_table: bool
+    ) -> None:
+        if isinstance(df, pd.Series):
+            data = [df.to_dict()]
+        elif isinstance(df, pd.DataFrame):
+            data = df.to_dict(orient="records")
+        cls.__insert_dicts(data, table, connection, delete_table)
 
 
     @classmethod
     @classmethod
     def __delete_all_rows(cls, table: Any, connection: Any, delete_table: bool) -> None:
     def __delete_all_rows(cls, table: Any, connection: Any, delete_table: bool) -> None: