def _unpack_match()

in src/dfcx_scrapi/core/conversation.py [0:0]


    def _unpack_match(self, df: pd.DataFrame):
        """ Unpacks a 'match' column into four component columns.
        if a match column is None, then all four columns will be None.

        Args:
          df: dataframe containing a column named match of types.Match

        Returns:
          A copy of df with columns match_type, confidence, parameters_set,
            and detected_intent instead of match.

        """
        return (
            df.copy()
            .assign(
                match_type = lambda df: df.match.apply(
                    # pylint: disable=W0212
                    lambda match_value: match_value.match_type._name_
                    if match_value else ""
                ),
                confidence = lambda df: df.match.apply(
                    lambda match_value: match_value.confidence
                    if match_value else ""
                ),
                parameters_set = lambda df: df.match.apply(
                    lambda match_value: match_value.parameters
                    if match_value else ""
                ),
                detected_intent = lambda df: df.match.apply(
                    lambda match_value: match_value.intent.display_name
                    if match_value else ""
                )
            )
            .assign(
                parameters_set = lambda df: df.parameters_set.apply(
                    lambda parameter: self.recurse_proto_marshal_to_dict(
                        parameter) if parameter else "")
            )
            .drop(columns="match")
        )