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

如何在Python Pandas中实现类似SQL WHERE LIKE的结尾匹配并新增列

Pandas 根据SKU后缀新增列的实现方案

需求说明

给Pandas DataFrame新增一列,判断规则如下:

  • 当SKU以-RF结尾时,新列填入"USED"
  • 当SKU以-NEW结尾时,新列填入"NEW"
  • 其余情况不做处理(保持空值)

对应SQL LIKE的Python实现

SQL里的WHERE LIKE '%-RF'是匹配以指定字符串结尾的内容,在Python字符串中,直接用endswith()方法就能实现相同效果,不需要额外通配符语法。

完善你的循环代码片段

你提供的代码里,需要把占位符替换成sku_column.endswith('-RF')和sku_column.endswith('-NEW')——这里用判断语句而非相等判断,因为我们要检查的是字符串结尾,不是完全匹配。完善后的代码如下:

if sku_column.endswith('-RF'):
    val = "USED"
elif sku_column.endswith('-NEW'):
    val = "NEW"
else:
    continue

如果要放到完整的循环逻辑里处理DataFrame,参考下面的写法:

# 初始化新列
df['condition'] = None

# 遍历SKU列赋值
for idx, sku in df['SKU'].items():
    if sku.endswith('-RF'):
        df.loc[idx, 'condition'] = "USED"
    elif sku.endswith('-NEW'):
        df.loc[idx, 'condition'] = "NEW"
    # 其他情况不处理,保持空值

更高效的矢量化写法(推荐)

Pandas里循环效率较低,数据量大时更推荐用矢量化操作,比如结合numpy.where或者字符串方法批量处理:

方法一:嵌套np.where实现多条件判断

import numpy as np

df['condition'] = np.where(
    df['SKU'].str.endswith('-RF'), 
    'USED',
    np.where(
        df['SKU'].str.endswith('-NEW'), 
        'NEW', 
        None
    )
)

方法二:正则替换+过滤

# 先替换匹配的后缀为对应值
df['condition'] = df['SKU'].str.replace(r'.*-RF$', 'USED', regex=True)
df['condition'] = df['condition'].str.replace(r'.*-NEW$', 'NEW', regex=True)

# 把未匹配的项转为空值
df['condition'] = df['condition'].where(df['condition'].isin(['USED', 'NEW']), None)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 09:00:51