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

DataFrame列模式替换问题:2X6.4T换12T且排除含WOW的行

解决Pandas中指定模式替换并排除特定行的问题

嘿,我明白你遇到的问题了——默认的replace方法是精确匹配整个单元格内容,而不是替换字符串片段,而且你还需要排除包含'WOW'的行不做修改。下面给你两种简单可行的解决方案:

方案1:布尔索引 + str.replace

先筛选出不包含'WOW'的行,再对这些行的Type列进行片段替换:

# 筛选Type列不含'WOW'的行,替换其中的'2X6.4T'为'12T'
mask = ~df['Type'].str.contains('WOW')
df.loc[mask, 'Type'] = df.loc[mask, 'Type'].str.replace('2X6.4T', '12T')

方案2:用np.where简化逻辑

如果你喜欢更简洁的写法,可以用np.where一行搞定条件判断和替换:

import numpy as np

df['Type'] = np.where(
    ~df['Type'].str.contains('WOW'),
    df['Type'].str.replace('2X6.4T', '12T'),
    df['Type']  # 含'WOW'的行保持原样
)

为什么你的原代码没生效?

你原来用的df['Type'].replace(['2X6.4T'],'12T')是精确匹配整个单元格,只有当某个单元格的内容完全等于'2X6.4T'时才会替换,而你的单元格都是长字符串,自然不会生效。而str.replace是专门针对字符串内部片段的替换方法,完全符合你的需求。

验证结果

运行上面的代码后,你的Type列会变成你期望的样子:

Type
AY12-AYY-AY-R800-900G-12T_18T-R6-v.A
AY12-AYY-AY-R800-900G-12T_18T-R6-v.A
AY12-AYY-AY-R800-900G-12T_18T-R6-v.A
AY12-AYY-AY-R800XD-900G-6.4T-R11-WOW-v.A
AY12-AYY-AY-R800XD-900G-6.4T-R11-WOW-v.A

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:12:33