Bases: Model['pd.DataFrame | pd.Series | AnyJsonTableType'], PrintableTable
Source code in src/omnipy/components/pandas/models.py
| class PandasModel(Model['pd.DataFrame | pd.Series | AnyJsonTableType'], PrintableTable):
if TYPE_CHECKING:
def __new__(cls, *args: Any, **kwargs: Any) -> 'PandasModel_DataFrame':
...
@classmethod
def _parse_data(
cls,
data: 'pd.DataFrame | pd.Series | AnyJsonTableType',
) -> 'pd.DataFrame | pd.Series':
from .lazy_import import pd
if isinstance(data, pd.DataFrame) or isinstance(data, pd.Series):
return data
return cls._from_iterable(data)
# @staticmethod
# def _data_column_names_are_strings(data: pd.DataFrame) -> None:
# for column in data.columns:
# assert isinstance(column, str)
# @staticmethod
# def _data_not_empty_object(data: pd.DataFrame) -> None:
# assert not any(data.isna().all(axis=1))
#
@classmethod
def _from_iterable(cls, data: Iterable) -> 'pd.DataFrame':
from .lazy_import import pd
return pd.DataFrame(data.content if is_model_instance(data) else data).convert_dtypes()
def to_data(self) -> Any:
from .lazy_import import pd
df = self.content.replace({pd.NA: None})
if isinstance(df, pd.DataFrame):
# return df.to_dict(orient='records')
return df.to_dict(orient='list')
elif isinstance(df, pd.Series):
return df.to_dict()
def from_data(self, data: Iterable) -> None:
self._validate_and_set_value(self._from_iterable(data))
def from_json(self, json_content: str) -> None:
from .lazy_import import pd
self._validate_and_set_value(pd.read_json(StringIO(json_content)).convert_dtypes())
def to_json(self, pretty=True) -> str:
from .lazy_import import pd
if isinstance(self.content, pd.DataFrame):
return self.content.to_json(orient='records')
elif isinstance(self.content, pd.Series):
return self.content.to_json()
else:
raise ShouldNotOccurException()
|
from_data
from_data(data: Iterable) -> None
Source code in src/omnipy/components/pandas/models.py
| def from_data(self, data: Iterable) -> None:
self._validate_and_set_value(self._from_iterable(data))
|
from_json
from_json(json_content: str) -> None
Source code in src/omnipy/components/pandas/models.py
| def from_json(self, json_content: str) -> None:
from .lazy_import import pd
self._validate_and_set_value(pd.read_json(StringIO(json_content)).convert_dtypes())
|
to_data
Source code in src/omnipy/components/pandas/models.py
| def to_data(self) -> Any:
from .lazy_import import pd
df = self.content.replace({pd.NA: None})
if isinstance(df, pd.DataFrame):
# return df.to_dict(orient='records')
return df.to_dict(orient='list')
elif isinstance(df, pd.Series):
return df.to_dict()
|
to_json
to_json(pretty=True) -> str
Source code in src/omnipy/components/pandas/models.py
| def to_json(self, pretty=True) -> str:
from .lazy_import import pd
if isinstance(self.content, pd.DataFrame):
return self.content.to_json(orient='records')
elif isinstance(self.content, pd.Series):
return self.content.to_json()
else:
raise ShouldNotOccurException()
|