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 get_option_values(self, element_class, prop, element_name): """Return the option values for the element property. element_class : str prop : str element_name : str Returns ------- list """ df = self.get_dataframe(element_class, prop, element_name) return ValueStorageBase.get_option_values(df, element_name)
def get_full_dataframe(self, element_class, prop, real_only=False, abs_val=False, **kwargs): """Return a dataframe containing all data. The dataframe is copied. Parameters ---------- element_class : str prop : str real_only : bool If dtype of any column is complex, drop the imaginary component. abs_val : bool If dtype of any column is complex, compute its absolute value. kwargs Filter on options; values can be strings or regular expressions. Returns ------- pd.DataFrame """ if prop not in self.list_element_properties(element_class): raise InvalidParameter(f"property {prop} is not stored") dataset = self._group[f"{element_class}/ElementProperties/{prop}"] df = DatasetBuffer.to_dataframe(dataset) if kwargs: options = self._check_options(element_class, prop, **kwargs) names = self._elems_by_class.get(element_class, set()) columns = ValueStorageBase.get_columns(df, names, options, **kwargs) columns = list(columns) columns.sort() df = df[columns] self._finalize_dataframe(df, dataset, real_only=real_only, abs_val=abs_val) return df
def _get_elem_prop_dataframe(self, elem_class, prop, name, dataset, real_only=False, abs_val=False, **kwargs): col_range = self._get_element_column_range(elem_class, prop, name) df = DatasetBuffer.to_dataframe(dataset, column_range=col_range) if kwargs: options = self._check_options(elem_class, prop, **kwargs) columns = ValueStorageBase.get_columns(df, name, options, **kwargs) df = df[columns] self._finalize_dataframe(df, dataset, real_only=real_only, abs_val=abs_val) return df