Pandas判断两DataFrame指定列值是否匹配并新增分类标记列
Pandas实现多表存在性判断并新增列的方案
首先导入依赖包并初始化示例数据:
import pandas as pd import numpy as np # 示例DataFrame初始化 df_threads = pd.DataFrame({'conv_id': ['12', '15', '14', '23'], 'tweets': ['Nice', 'Test', 'Hi', 'Yes']}) df_orig = pd.DataFrame({'id': ['17', '12', '15', '6','67'], 'tweets': ['hola', 'mundo', 'yes', 'look', 'Beautiful']})
核心实现代码
提供两种常用实现方式,逻辑完全一致:
方法1:结合numpy.where实现(代码最简洁)
# 提前提取id唯一值可提升大数据量下的判断效率 orig_id_set = df_orig['id'].unique() df_threads['File'] = np.where(df_threads['conv_id'].isin(orig_id_set), 'Spanish', 'Portuguese')
方法2:仅用Pandas原生方法实现
df_threads['File'] = df_threads['conv_id'].isin(df_orig['id']).map({True: 'Spanish', False: 'Portuguese'})
输出结果
执行后打印df_threads得到符合匹配逻辑的结果:
conv_id tweets File 0 12 Nice Spanish 1 15 Test Spanish 2 14 Hi Portuguese 3 23 Yes Portuguese
注:你给出的预期输出为格式示例,实际结果会严格按照匹配规则生成,若需要调整匹配逻辑仅需交换isin方法两侧的判断对象即可。
内容的提问来源于stack exchange,提问作者coding
相关产品推荐
相关产品推荐

