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

如何合并两个pandas dataframe并按条件生成二分类标识列

实现方法

有两种简单高效的实现方式,效果一致:

方法1:使用isin()直接判断(推荐,代码最简洁)

核心逻辑是先提取有影响力期刊的标题列表,直接对论文表的期刊名做匹配,布尔值转整数即可得到0/1的二分类标记。

import pandas as pd

# ---------- 构造示例数据,有自己的数据集可跳过这部分 ----------
# 有影响力期刊表
influential_journals = pd.DataFrame({
    'journal_id': [1,2,3],
    'journal_title': ['Journal 1', 'Journal 2', 'Journal 3']
})
# 论文列表表
articles = pd.DataFrame({
    'article_id': [1,2,3,4],
    'journal_title': ['Journal 1', 'Journal 2', 'Journal 18', 'Journal 55'],
    'article_title': ['Title 1', 'Title 2', 'Title 3', 'Title 4']
})
# ----------------------------------------------------------

# 核心代码仅1行
articles['influential'] = articles['journal_title'].isin(influential_journals['journal_title']).astype(int)

该方法不需要修改原表结构,执行效率高,适合数据量较大的场景。

方法2:使用merge左连接实现

核心逻辑是先给有影响力期刊表加一个全为1的标记列,再和论文表按期刊名字段左连接,缺失的标记值填充为0即可。

# 给影响力期刊表新增标记列
influential_journals['influential'] = 1
# 左连接合并,缺失的标记值填充为0
articles = articles.merge(influential_journals[['journal_title', 'influential']], on='journal_title', how='left').fillna(0)
# 转换为整数类型
articles['influential'] = articles['influential'].astype(int)

注意:如果两个表的期刊名存在大小写、首尾空格不一致的情况,匹配前建议先做标准化处理,避免匹配失败:

# 统一转小写并去除首尾空白字符
influential_journals['journal_title'] = influential_journals['journal_title'].str.strip().str.lower()
articles['journal_title'] = articles['journal_title'].str.strip().str.lower()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:57:05