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

满足双条件时修改DataFrame的Level列值的正确方法求助

解决DataFrame条件修改列值并保留其余原始值的问题

问题场景

需要实现:当DataFrame中Type列为'Medium'且Level列为'level 1'时,将Level列值改为'level',同时保留其他行的原始Level值。

原始数据

import pandas as pd
import numpy as np

data = {
    'Type': ['High', 'High', 'Medium', 'Low', 'Low'],
    'Level': ['level 1', 'level 2', 'level 1', 'level 1', 'level 2']
}
df = pd.DataFrame(data)

原代码问题分析

你之前使用的np.where写法中,第三个参数指定了固定值'No Level',这会导致所有不满足条件的行都被替换成这个值,而不是保留原始的Level数据。

正确实现方法

方法1:修正np.where参数

将np.where的第三个参数改为原始的df["Level"],这样不满足条件时就会保留原值:

df["Level"] = np.where(
    (df["Type"] == "Medium") & (df["Level"] == "level 1"),
    'level',
    df["Level"]
)

方法2:使用loc定位修改(更直观)

通过loc直接定位到满足条件的行和列,进行精准修改:

df.loc[(df["Type"] == "Medium") & (df["Level"] == "level 1"), "Level"] = "level"

最终结果

执行上述任意一种方法后,得到的DataFrame如下:

Type    Level
0    High  level 1
1    High  level 2
2  Medium    level
3     Low  level 1
4     Low  level 2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 20:07:19