You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Pandas DataFrame中筛选同时使用两种药物的患者数据

问题原因

你之前用pd.concat的join="inner"达不到预期效果,是因为concat的内连接逻辑是按列名对齐拼接,不会按patient字段匹配两个表中同时存在的患者,仅会保留两个输入表都有的列名,所以只是把两个表的行拼到一起了。

解决方案

方法1:基于你已经生成的df1、df2实现

先取两个表中患者ID的交集,再从原表中筛选这些患者的全部记录即可:

# 取同时出现在df1和df2中的患者ID
common_patients = df1['patient'][df1['patient'].isin(df2['patient'])].unique()
# 从原表筛选对应患者的所有记录
result = df[df['patient'].isin(common_patients)]

方法2:更简洁的分组筛选写法(无需提前拆分df1、df2)

直接对患者ID分组,筛选同时包含A、B两种用药记录的分组即可:

result = df.groupby('patient').filter(lambda x: {'A', 'B'}.issubset(x['drug'].tolist()))

两种方法输出的结果都和你预期的一致:

patient drug
0    1001    A
1    1001    B
4    1004    A
5    1004    B

内容的提问来源于stack exchange,提问作者Tony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 07:48:03