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

如何通过Pandas分组筛选多数文献显示疾病下调作用的药物

实现逻辑与代码

核心逻辑是按Drug字段分组后统计每个药物的下调结论占比,再筛选符合要求的药物。

方法1:严格多数(下调论文数超过总论文数的1/2)

符合你示例中对“多数”的判定逻辑:

# 1. 按药物分组统计总论文数、下调结论的论文数
drug_stats = df.groupby("Drug", as_index=False).agg(
    total_cnt = ("Journal", "count"),
    down_cnt = ("Affect", lambda ser: (ser == "downregulate").sum())
)

# 2. 筛选符合条件的药物,输出为列表
qualified_drugs = drug_stats[drug_stats["down_cnt"] > drug_stats["total_cnt"] / 2]["Drug"].tolist()

方法2:相对多数(下调是所有结论中占比最高的类型)

如果你的“多数”指下调结论的数量比其他任意单类结论都多(不需要超过总数量的一半),可以用如下逻辑:

qualified_drugs = (
    df.groupby("Drug")["Affect"]
    # 取每个药物出现次数最多的作用效果
    .agg(lambda ser: ser.value_counts().idxmax())
    # 筛选出最常见效果为下调的药物
    .loc[lambda x: x == "downregulate"]
    .index
    .tolist()
)

补充说明:数据拼写校正

你提供的示例数据中存在aspirin拼写为aspririn、ibuprofen拼写为iboruprofen的错误,如果需要把拼写错误的同一种药物合并统计,可以提前做数据清洗:

# 可根据实际错误情况扩展校正映射表
spell_map = {
    "aspririn": "aspirin",
    "iboruprofen": "ibuprofen"
}
df["Drug"] = df["Drug"].replace(spell_map)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:15:05