如何根据另一个数据框中的值在数据框中创建分类字段

我需要根据另一个数据框中的值创建一个分类变量。考虑表 1,其中包含医院就诊和患者 ID。请注意,患者可以多次访问医院:


+----------+------------+

| visit_id | patient_id |

+----------+------------+

|       10 |          1 |

|       20 |          1 |

|       50 |          2 |

|      100 |          3 |

|      110 |          3 |

+----------+------------+

我需要添加一个带有 1 或 0 的新字段,指示患者在医院就诊期间是否接受了阿司匹林,如表 2 所示:


+----------+------------+---------------+

| visit_id | patient_id |  medication   |

+----------+------------+---------------+

|       10 |          1 | aspirin       |

|       10 |          1 | ibuprofin     |

|       20 |          1 | codine        |

|       50 |          2 | aspirin       |

|      100 |          3 | ibuprofin     |

|      110 |          3 | acetaminophin |

|      110 |          3 | vicodin       |

+----------+------------+---------------+

您可以再次看到多个级别 - 您可以从医生那里获得不止一种药物,对吗?当然,这只是一个例子。


我试图合并表(内连接),这有效......


tab1 = pd.merge(tab1, tab2, on=['visit_id','patient_id'])


tab1['aspirin_index'] = np.where(tab1['medication'].str.contains('aspirin', 

       flags=re.IGNORECASE, regex=True, na=False),1,0)

...但后来我得到了同时服用阿司匹林和布洛芬的患者 1 的重复结果。我只需要知道他们是否至少服用过一次阿司匹林。


+----------+------------+---------------+

| visit_id | patient_id | aspirin_index |

+----------+------------+---------------+

|       10 |          1 |             1 |

|       10 |          1 |             0 |

+----------+------------+---------------+

我需要到这里...与表 1 相同的形状,但只是使用新索引。


+----------+------------+---------------+

| visit_id | patient_id | aspirin_index |

+----------+------------+---------------+

|       10 |          1 |             1 |

|       20 |          1 |             0 |

|       50 |          2 |             1 |

|      100 |          3 |             0 |

|      110 |          3 |             0 |

+----------+------------+---------------+


萧十郎
浏览 153回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python