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

如何在Python中根据多条件填充DataFrame的Action列

解决方案

你可以通过两种方式实现需求,优先推荐向量化操作的方法(效率更高):

方法一:使用pandas.DataFrame.loc(推荐)

利用str.contains检查字符串包含关系,结合逻辑与条件筛选目标行,直接赋值:

import pandas as pd

df1= pd.DataFrame.from_dict({
    'Description': ['This car is german', 'This vehicle is french', 'This automobile is british', 'This car is british', 'This thing is british'], 
    'SUV?': ['Yes', 'No', 'No', 'Yes', 'Yes'],
    'Action': [' ', ' ', ' ', ' ', ' '],
})

# 筛选同时满足两个条件的行,修改Action列
df1.loc[(df1['Description'].str.contains('british')) & (df1['SUV?'] == 'Yes'), 'Action'] = 'buy'

print(df1)

执行后结果:

DescriptionSUV?Action
This car is germanYes
This vehicle is frenchNo
This automobile is britishNo
This car is britishYesbuy
This thing is britishYesbuy

注意:条件两边要加括号,因为&的运算符优先级高于比较运算符,避免逻辑错误。

方法二:使用apply(逐行处理)

如果坚持用lambda,需要指定axis=1以逐行访问数据,同时判断两个列的条件:

df1['Action'] = df1.apply(
    lambda row: 'buy' if ('british' in row['Description'] and row['SUV?'] == 'Yes') else row['Action'],
    axis=1
)

这种方法适合小数据集,大数据量下效率不如第一种向量化方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 03:21:02