def select(
        self, currency: str | list | None = None, family: str | list | None = None
    ) -> pd.DataFrame:
        """
        Select moneymarkets based on specified criteria.

        Returns all moneymarkets when no input is given and has the option to filter
        based on currency and family.

        Args:
            currency (str | list, optional): Filter by currency.
                Default is None, which returns all currencies.
            family (str | list, optional): Filter by family.
                Default is None, which returns all families.

        Raises:
            ValueError: If the specified currency or family is not available in the database.
                Please check the available currencies and families using the 'show_options' method.

        Returns:
            pd.DataFrame: DataFrame containing the selected moneymarkets data.
        """
        moneymarkets = self.data.copy(deep=True)

        if currency:
            currencies = [currency] if isinstance(currency, str) else currency
            currencies_lower = [currency.lower() for currency in currencies]
            options_lower = [
                option.lower() for option in self.show_options(selection="currency")
            ]
            for currency_lower, currency_actual in zip(currencies_lower, currencies):
                if currency_lower not in options_lower:
                    raise ValueError(
                        f"The currency '{currency_actual}' is not available in the database. "
                        "Please check the available currencies using the 'show_options' method."
                    )
            moneymarkets = moneymarkets[
                moneymarkets["currency"].str.lower().isin(currencies_lower)
            ]
        if family:
            families = [family] if isinstance(family, str) else family
            families_lower = [family.lower() for family in families]
            options_lower = [
                option.lower() for option in self.show_options(selection="family")
            ]
            for family_lower, family_actual in zip(families_lower, families):
                if family_lower not in options_lower:
                    raise ValueError(
                        f"The family '{family_actual}' is not available in the database. "
                        "Please check the available families using the 'show_options' method."
                    )
            moneymarkets = moneymarkets[
                moneymarkets["family"].str.lower().isin(families_lower)
            ]

        return FinanceFrame(moneymarkets)

        Select moneymarkets based on specified criteria.

        Returns all moneymarkets when no input is given and has the option to filter
        based on currency and family.

        Args:
            currency (str | list, optional): Filter by currency.
                Default is None, which returns all currencies.
            family (str | list, optional): Filter by family.
                Default is None, which returns all families.

        Raises:
            ValueError: If the specified currency or family is not available in the database.
                Please check the available currencies and families using the 'show_options' method.

        Returns:
            pd.DataFrame: DataFrame containing the selected moneymarkets data.
        
financedatabase/Moneymarkets.py