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

在Pandas与Numpy中实现正则/IN匹配提取DataFrame列内容求助

问题分析

你现在的问题出在"_OPTI" in cycling['qty']这个判断上——当你对Pandas的Series使用in操作符时,它检查的是目标值是否存在于Series的索引中,而不是每个单元格的字符串内容里是否包含这个子串,所以这行代码无法达到你想要的筛选效果。

解决方案

要实现“筛选并保留包含特定子串的单元格”,你可以使用Pandas的str.contains()方法,它专门用于检查Series中每个字符串元素是否包含指定的子串(支持正则表达式)。

修正后的代码

import pandas as pd
import numpy as np

cycling = pd.DataFrame(
    {
        'qty' : ['RONCQ_A2_OPTI_SRV_S3','RONCQ_A3_SRV_S3','RONCQ_A2_TEMP_SRV_S3','RONCQ_A2_SRV_S3','RONCQ_A2_PC_SRV_S3'],
    }
)
# 使用str.contains检查每个qty元素是否包含"_OPTI"
cycling['col3'] = np.where(cycling['qty'].str.contains("_OPTI"), cycling['qty'], 'autre')
print(cycling)

扩展:匹配多个子串的情况

如果你之后需要匹配多个子串(比如同时包含_OPTI或_TEMP),可以用正则表达式的或操作|:

cycling['col3'] = np.where(cycling['qty'].str.contains("_OPTI|_TEMP"), cycling['qty'], 'autre')

运行结果

执行修正后的代码后,输出会和你期望的一致:

qty                  col3
0  RONCQ_A2_OPTI_SRV_S3  RONCQ_A2_OPTI_SRV_S3
1      RONCQ_A3_SRV_S3                  autre
2  RONCQ_A2_TEMP_SRV_S3                  autre
3      RONCQ_A2_SRV_S3                  autre
4   RONCQ_A2_PC_SRV_S3                  autre

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:51:07