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

如何根据Pandas DataFrame其他列的值更新指定行的目标列元素

Pandas按条件更新指定行字段的最优方案

问题原因

你之前的写法是给整个price Now列赋值单个标量值,因此会触发全列统一填充,导致所有行的取值一致。

最优实现方法

Pandas官方推荐使用loc索引器实现按条件更新,不会触发链式索引警告,执行效率和安全性都是最优的。

针对你的需求的代码示例

# 仅筛选Company列为ASSA-B.ST的行,更新其price Now字段为200
p1.loc[p1["Company"] == "ASSA-B.ST", "price Now"] = 200

语法说明

  • loc的第一个参数是行筛选条件:传入布尔序列,只有返回True的行会被选中
  • loc的第二个参数是要更新的列名,可以传入单个列名字符串,也可以传入列表同时修改多列
  • 等号右侧的新值如果是标量,所有匹配行都会被赋值为该值;如果是和匹配行数长度一致的序列,会逐行对应赋值

注意事项

如果需要多条件组合筛选,每个独立条件需要用括号包裹,用&(逻辑与)、|(逻辑或)连接,示例:

# 同时满足Company为ASSA-B.ST、Value大于950的行才会被更新
p1.loc[(p1["Company"] == "ASSA-B.ST") & (p1["Value"] > 950), "price Now"] = 200

不要使用p1[p1["Company"] == "ASSA-B.ST"]["price Now"] = 200这类链式索引写法,大概率会触发SettingWithCopyWarning警告,且修改可能不会实际生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:24:00