如何通过For Loop与If语句为DataFrame新增布尔列并填充值
实现SKU匹配的布尔列填充
用For Loop + If语句的实现方式
你原来的代码只遍历了GAP SKU的值,但没法对应到具体行,所以无法修改新列。可以通过遍历行索引和行数据来解决:
- 先初始化新增的
True/False列,默认值设为False - 用
iterrows()遍历每一行,同时拿到行索引和行数据 - 检查当前行的
GAP SKU是否存在于Consolidated SKU列中,存在则把对应行的新列设为True
代码示例:
import pandas as pd # 初始化新列,默认值为False df['True/False'] = False # 遍历每一行,获取索引和行数据 for idx, row in df.iterrows(): current_gap_sku = row['GAP SKU'] # 转为numpy数组提升查询效率 if current_gap_sku in df['Consolidated SKU'].values: df.loc[idx, 'True/False'] = True
更高效的Pandas内置方法(推荐)
如果处理的数据集较大,for loop的运行效率会很低,推荐使用Pandas内置的isin()方法,一行代码即可完成需求,且内部做了性能优化:
df['True/False'] = df['GAP SKU'].isin(df['Consolidated SKU'])
该方法会直接生成对应布尔值的列,逻辑和你要求的完全一致,是更符合Pandas风格的实现方式。
内容的提问来源于stack exchange,提问作者James Rush
相关产品推荐
相关产品推荐

