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

满足Type列指定条件时将Series Name列替换为np.nan的实现问题

解决Pandas按条件替换DataFrame列值的问题

问题场景

输入数据集:

Series Name     Type  
Food            ACG
Drinks          FEG
Food at Home    BON

需求:当Type列值为ACG或BON时,将Series Name列替换为np.nan或空白字符串。

原代码错误分析

你写的代码存在语法逻辑错误:

df.loc[((df['Type'] == 'ACG') | (df['Type'] == 'BON')),
                df['Series Name'].replace(np.nan)]
  • loc的第二个参数应该是列名(字符串),而非df['Series Name'].replace(np.nan)这种返回Series的操作
  • 代码未完成赋值动作,仅做了无效的索引定位

正确实现代码

方式1:使用loc定位赋值(最直观)

import pandas as pd
import numpy as np

# 构造示例数据
df = pd.DataFrame({
    'Series Name': ['Food', 'Drinks', 'Food at Home'],
    'Type': ['ACG', 'FEG', 'BON']
})

# 按条件替换为np.nan(Pandas默认显示为空白)
df.loc[df['Type'].isin(['ACG', 'BON']), 'Series Name'] = np.nan

# 若需替换为空白字符串而非nan,改为:
# df.loc[df['Type'].isin(['ACG', 'BON']), 'Series Name'] = ''

方式2:使用mask函数(更简洁)

mask函数会自动将满足条件的元素替换为指定值:

df['Series Name'] = df['Series Name'].mask(df['Type'].isin(['ACG', 'BON']), np.nan)

执行结果

替换为np.nan后,DataFrame显示如下:

Series Name Type
0             ACG
1       Drinks  FEG
2             BON

注:你给出的期望输出中Type=FEG的行也被替换,但根据需求描述应保留Drinks,上述代码严格按你的需求实现,若需调整条件可修改isin中的参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 13:45:30