2个不同数据框列中的比例

时间:2019-10-08 20:12:15

标签: python pandas dataframe

在接受可能为A,B,C(药物代码)的第一线治疗后,继续进行第二线治疗的所有癌症患者中有多大比例呢?

我很困惑如何找到它。

如何通过for循环找到它?有人会告诉我这个代码吗?我也被困在那里。

我尝试实现下面粘贴的代码

for i in q1b['PatientID']:
#here every patient ID of dataset(q1b) should go through dataset2 patient drugcode
 dataset2['DrugCode']
 #Now i need to find proportion like if some patient was treating for A then if drug a didnt work how many patients went for B as asked in question.i tried running loop i think we need nested loop

预期输出:

我在数据集中有29位患者(q1b),我想找到比例,例如有多少患者接受从药物代码A到药物治疗B的第二线治疗,假设有3位患者从药物代码A到药物治疗B,所以这样的比例将是3/29 * 100,我期望这样的期望输出。dataset picture

1 个答案:

答案 0 :(得分:0)

因此,如果我对您的理解是正确的,那么您想查找同时接受过药物A和接受过药物B的患者所占的百分比。

codes = df.groupby('PatientID').apply(lambda x: set(x['DrugCode']))
codes[codes.apply(lambda x: 'A' in x)].apply(lambda x: 'B' in x).mean() * 100

此外,如果您可以假设每个患者都从'A'开始,这可以归结为

df.groupby('PatientID').apply(lambda x: 'B' in x['DrugCode'].values).mean() * 100