From 0f5af21f71f52f561e7ab056aa3635441e721c3c Mon Sep 17 00:00:00 2001 From: junos Date: Tue, 27 Jul 2021 19:53:44 +0200 Subject: [PATCH] Detect whether event was work related. --- features/esm_SAM.py | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/features/esm_SAM.py b/features/esm_SAM.py index 1f30ed6..4693571 100644 --- a/features/esm_SAM.py +++ b/features/esm_SAM.py @@ -47,6 +47,15 @@ def extract_stressful_events(df_esm: pd.DataFrame) -> pd.DataFrame: ) # 3. + df_esm_event_work_related = detect_event_work_related(df_esm_sam_clean) + + df_esm_events = df_esm_events.join( + df_esm_event_work_related[ + GROUP_QUESTIONNAIRES_BY.append("event_work_related") + ].set_index(GROUP_QUESTIONNAIRES_BY) + ) + + # 4. df_esm_event_time = convert_event_time(df_esm_sam_clean) df_esm_events = df_esm_events.join( @@ -55,7 +64,7 @@ def extract_stressful_events(df_esm: pd.DataFrame) -> pd.DataFrame: ) ) - # 4. + # 5. df_esm_event_duration = extract_event_duration(df_esm_sam_clean) df_esm_events = df_esm_events.join( @@ -118,6 +127,17 @@ def detect_stressful_event(df_esm_sam_clean: pd.DataFrame) -> pd.DataFrame: return df_esm_event_stress +def detect_event_work_related(df_esm_sam_clean: pd.DataFrame) -> pd.DataFrame: + df_esm_event_stress = df_esm_sam_clean[ + df_esm_sam_clean["questionnaire_id"] + == QUESTIONNAIRE_ID_SAM.get("event_work_related") + ] + df_esm_event_stress = df_esm_event_stress.assign( + event_work_related=lambda x: x.esm_user_answer_numeric > 0 + ) + return df_esm_event_stress + + def convert_event_time(df_esm_sam_clean: pd.DataFrame) -> pd.DataFrame: df_esm_event_time = df_esm_sam_clean[ df_esm_sam_clean["questionnaire_id"] == QUESTIONNAIRE_ID_SAM.get("event_time") @@ -151,9 +171,7 @@ def extract_event_duration(df_esm_sam_clean: pd.DataFrame) -> pd.DataFrame: df_esm_event_duration[ df_esm_event_duration.event_duration.isna() ] = df_esm_event_duration[df_esm_event_duration.event_duration.isna()].assign( - event_duration_info=lambda x: x.esm_user_answer.str.slice(stop=1).astype( - int - ) + event_duration_info=lambda x: x.esm_user_answer.str.slice(stop=1).astype(int) ) return df_esm_event_duration