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

在Pandas与Numpy中用正则或IN筛选列值的问题求助

解决Pandas DataFrame中提取包含指定子串的单元格问题

嘿,我来帮你搞定这个问题~你当前代码里的问题在于直接用in操作符去判断cycling['qty']这个Series,这在Pandas里是行不通的——in在这里会检查的是Series的索引是否存在,而不是每个元素的内容,所以达不到你想要的效果。

下面给你两种靠谱的解决方案,都能实现你期望的输出:

方法1:使用str.contains(推荐,适合子串匹配)

这是处理字符串包含判断最直接的方式,Pandas的Series提供了str.contains方法,可以逐元素检查字符串是否包含指定子串:

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逐行检查是否包含"_OPTI",再用np.where赋值
cycling['col3'] = np.where(cycling['qty'].str.contains('_OPTI'), cycling['qty'], 'autre')
print(cycling)

运行这段代码后,你会得到完全符合预期的输出:

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

如果之后你需要匹配多个子串,可以用正则表达式的或操作符|,比如要匹配包含_OPTI或_TEMP的元素,只需把条件改成:

cycling['qty'].str.contains('_OPTI|_TEMP')

方法2:使用isin(适合精确匹配完整字符串)

如果你之后需要的是精确匹配某几个完整的字符串,而不是子串,就可以用isin方法,比如:

# 假设要精确匹配这两个完整字符串
target_values = ['RONCQ_A2_OPTI_SRV_S3', 'RONCQ_A2_TEMP_SRV_S3']
cycling['col3'] = np.where(cycling['qty'].isin(target_values), cycling['qty'], '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:57:22