Python 在多列中查找某些关键字并为新列赋值

Python 在多列中查找某些关键字并为新列赋值,python,pandas,Python,Pandas,我的目的是获取包含以下关键字的列名“Body”和“Original Sender ID”中的以下关键字,并为列名“New value”指定值1 “搜索”必须是精确的关键字,例如“行”不能检测为“在线” 我已将“新值”列的值0设置为默认值 keywords = ('WhatsApp', 'Google' , 'Michat' , 'Line') df3[df3['Body'].str.contains(keywords) | df3['Original Sender ID'].str.conati

我的目的是获取包含以下关键字的列名“Body”和“Original Sender ID”中的以下关键字,并为列名“New value”指定值1

“搜索”必须是精确的关键字,例如“行”不能检测为“在线”

我已将“新值”列的值0设置为默认值

keywords = ('WhatsApp', 'Google' , 'Michat' , 'Line')
df3[df3['Body'].str.contains(keywords) | df3['Original Sender ID'].str.conatins(keywords)]
df3.loc['New Value'] = '1'

谢谢你的帮助!:)

实现这一点的最快方法是通过np.where()并使用join操作符构造要从中搜索的列表。str.contains()将确保只标记精确匹配

import pandas as pd
import numpy as np

data = {'Body':  ['Whatsapp', 'bar','What', "contains WhatsApp"],
        'Original Sender ID': ['foo', 'also contains WhatsApp','baz', "App"]}
df = pd.DataFrame (data)


keywords = ['WhatsApp', 'Google' , 'Michat' , 'Line']
df["NewValue"] = np.where((df['Body'].str.contains('|'.join(keywords))) | (df['Original Sender ID'].str.contains('|'.join(keywords))),1,0)