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")
)