pm4py.algo.filtering.pandas.activity_split.activity_split_filter module#

PM4Py – A Process Mining Library for Python Copyright (C) 2026 Process Intelligence Solutions GmbH

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see this software project’s root or visit <https://www.gnu.org/licenses/>.

Website: https://processintelligence.solutions Contact: info@processintelligence.solutions

class pm4py.algo.filtering.pandas.activity_split.activity_split_filter.Parameters(*values)[source]#

Bases: Enum

ACTIVITY_KEY = 'pm4py:param:activity_key'#
CASE_ID_KEY = 'pm4py:param:case_id_key'#
SUBCASE_CONCAT_STR = 'subcase_concat_str'#
CUT_MODE = 'cut_mode'#
pm4py.algo.filtering.pandas.activity_split.activity_split_filter.apply(df: DataFrame, activity: str | List[str], parameters: Dict[str | Parameters, Any] | None = None) → DataFrame[source]#

Splits the cases of a log (Pandas dataframe) into subcases based on the provision of an activity. There are as many subcases as many occurrences of a given activity occur.

Example: Original log:

[[‘register request’, ‘examine casually’, ‘check ticket’, ‘decide’, ‘reinitiate request’, ‘examine thoroughly’, ‘check ticket’, ‘decide’, ‘pay compensation’], [‘register request’, ‘examine casually’, ‘check ticket’, ‘decide’, ‘reinitiate request’, ‘check ticket’, ‘examine casually’, ‘decide’, ‘reinitiate request’, ‘examine casually’, ‘check ticket’, ‘decide’, ‘reject request’]]

Log filtered using the activity split filter on ‘reinitiate request’ with cut_mode=’this’:

[[‘register request’, ‘examine casually’, ‘check ticket’, ‘decide’], [‘reinitiate request’, ‘examine thoroughly’, ‘check ticket’, ‘decide’, ‘pay compensation’], [‘register request’, ‘examine casually’, ‘check ticket’, ‘decide’], [‘reinitiate request’, ‘check ticket’, ‘examine casually’, ‘decide’], [‘reinitiate request’, ‘examine casually’, ‘check ticket’, ‘decide’, ‘reject request’]]

Log filtered using the activity split filter on ‘reinitiate request’ with cut_mode=’next’:

[[‘register request’, ‘examine casually’, ‘check ticket’, ‘decide’, ‘reinitiate request’], [‘examine thoroughly’, ‘check ticket’, ‘decide’, ‘pay compensation’], [‘register request’, ‘examine casually’, ‘check ticket’, ‘decide’, ‘reinitiate request’], [‘check ticket’, ‘examine casually’, ‘decide’, ‘reinitiate request’], [‘examine casually’, ‘check ticket’, ‘decide’, ‘reject request’]]

Parameters:
  • df – Dataframe

  • activity – Activity (or collection of activities)

  • parameters – Parameters of the algorithm, including:

    • Parameters.ACTIVITY_KEY => activity key

    • Parameters.CASE_ID_KEY => case id

    • Parameters.SUBCASE_CONCAT_STR => concatenator between the case id and the subtrace index in the filtered df

    • Parameters.CUT_MODE => mode of cut:
      • “this” means that an event with the specified activity goes to the next subcase

      • “next” means that the following event (to the given activity) goes to the next subcase.

Returns:

Dataframe in which the cases are split into subcases

Return type:

filtered_df