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

如何用Pandas检测多列含指定值并生成新列存储匹配结果

解决方案

方法1:逐行遍历提取(直观易懂)

针对每行数据,依次检查目标列,提取第一个包含"food"的内容:

import pandas as pd

# 构建示例数据
df = pd.DataFrame({
    'tag_1': ['placeholder', 'British food', 'placeholder'],
    'tag_2': ['placeholder', 'placeholder', 'German food'],
    'tag_3': ['French food', 'placeholder', 'placeholder']
})

def extract_food(row):
    # 遍历需要检查的列
    for col in ['tag_1', 'tag_2', 'tag_3']:
        if 'food' in row[col]:
            return row[col]
    return None  # 无匹配内容时返回空值

df['food'] = df.apply(extract_food, axis=1)

方法2:向量化操作(高效适配大数据集)

利用pandas向量化方法替代逐行循环,处理速度更快:

# 生成各列是否包含"food"的布尔掩码
food_mask = df[['tag_1', 'tag_2', 'tag_3']].apply(lambda col: col.str.contains('food'))

# 用掩码过滤无效值后,按行向后填充空值,提取每行的有效匹配
df['food'] = df[['tag_1', 'tag_2', 'tag_3']].where(food_mask).bfill(axis=1).iloc[:, 0]

两种方法最终都会生成你需要的结果:

tag_1tag_2tag_3food
placeholderplaceholderFrench foodFrench food
British foodplaceholderplaceholderBritish food
placeholderGerman foodplaceholderGerman food

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 06:18:22