def get_dataframe(self, element_class, prop, element_name, real_only=False, **kwargs): """Return the dataframe for an element. Parameters ---------- element_class : str prop : str element_name : str real_only : bool If dtype of any column is complex, drop the imaginary component. kwargs : **kwargs Filter on options. Option values can be strings or regular expressions. Returns ------- pd.DataFrame Raises ------ InvalidParameter Raised if the element is not stored. """ if element_name not in self._elem_props: raise InvalidParameter(f"element {element_name} is not stored") elem_group = self._group[element_class][element_name] dataset = elem_group[prop] df = DatasetBuffer.to_dataframe(dataset) if kwargs: options = self._check_options(element_class, prop, **kwargs) columns = ValueStorageBase.get_columns(df, element_name, options, **kwargs) df = df[columns] if self._data_format_version == "1.0.0": dataset_property_type = DatasetPropertyType.ELEMENT_PROPERTY else: dataset_property_type = get_dataset_property_type(dataset) if dataset_property_type == DatasetPropertyType.FILTERED: timestamp_path = get_timestamp_path(dataset) timestamp_dataset = self._hdf_store[timestamp_path] df["Timestamp"] = DatasetBuffer.to_datetime(timestamp_dataset) df.set_index("Timestamp", inplace=True) else: self._add_indices_to_dataframe(df) if real_only: for column in df.columns: if df[column].dtype == np.complex: df[column] = [x.real for x in df[column]] return df
def _finalize_dataframe(self, df, dataset, real_only=False, abs_val=False): if df.empty: return dataset_property_type = get_dataset_property_type(dataset) if dataset_property_type == DatasetPropertyType.FILTERED: time_step_path = get_time_step_path(dataset) time_step_dataset = self._hdf_store[time_step_path] df["TimeStep"] = DatasetBuffer.to_datetime(time_step_dataset) df.set_index("TimeStep", inplace=True) else: self._add_indices_to_dataframe(df) if real_only: for column in df.columns: if df[column].dtype == complex: df[column] = np.real(df[column]) elif abs_val: for column in df.columns: if df[column].dtype == complex: df[column] = df[column].apply(np.absolute)