如何根据pandas DataFrame某列是否含指定词给另一列对应位置赋值
你写的代码有两处核心错误:
np.where()方法需要传入3个参数:判断条件、条件为真时的返回值、条件为假时的返回值,你只传了一个错误的条件,缺少返回值参数df['Description'].str.contains('good')本身返回的就是布尔值(True/False),你把它和字符串good_present做相等判断逻辑完全错误,永远会返回False
正确实现方式,两种可选:
方法1:使用numpy.where实现
import numpy as np df['Value'] = np.where(df['Description'].str.contains('good'), 'good_present', np.nan)
如果需要严格匹配独立单词good(避免匹配到"goodness"、"goodbye"这类包含good的其他单词),可以加正则单词边界:
df['Value'] = np.where(df['Description'].str.contains(r'\bgood\b'), 'good_present', np.nan)
方法2:使用pandas.loc直接赋值
这种写法更简洁,不需要额外导入numpy,且会自动保留不满足条件行的原有NaN值:
df.loc[df['Description'].str.contains('good'), 'Value'] = 'good_present'
内容的提问来源于stack exchange,提问作者user31934
相关产品推荐
相关产品推荐

