如何用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_1 | tag_2 | tag_3 | food |
|---|---|---|---|
| placeholder | placeholder | French food | French food |
| British food | placeholder | placeholder | British food |
| placeholder | German food | placeholder | German food |
内容的提问来源于stack exchange,提问作者Cameron Jones
相关产品推荐
相关产品推荐

