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

如何用Pandas一行命令为多列赋值?是否耗时仅为原1/3?

如何用一行Pandas代码完成多列赋值?

嘿,这个场景我太熟悉了!用Pandas的.loc方法就能轻松把三次单独赋值合并成一行,而且写法更规范、更安全。

合并后的写法

有两种常用的批量赋值方式,按需选择:

  • 按列顺序匹配值(简洁直观,适合列顺序固定的情况):
df.loc[index, ['column_a', 'column_b', 'column_c']] = [1, 2, 3]
  • 用字典映射列与值(更严谨,不用担心列顺序搞错):
df.loc[index, ['column_a', 'column_b', 'column_c']] = {'column_a': 1, 'column_b': 2, 'column_c': 3}

为什么不推荐原来的链式索引写法?

你之前写的df['column_a'][index]这种链式索引,Pandas可能会返回数据的副本而非原始视图,不仅容易触发SettingWithCopyWarning警告,极端情况下甚至会出现赋值不生效的问题(因为你修改的是副本而非原始DataFrame)。而.loc是官方推荐的显式定位赋值方式,能确保你直接操作原始数据,避免这类隐患。

关于耗时的问题

能不能把耗时降到原来的1/3?其实不一定,但肯定会比三次单独赋值高效很多。原因是三次单独操作会重复执行索引定位、数据校验等底层步骤,而一次批量赋值只需要做一次定位,然后一次性写入多个值,减少了大量重复的开销。尤其是在处理大型DataFrame或复杂索引时,性能提升会更明显。不过由于Pandas内部还有一些固定的操作成本,所以不会严格达到1/3的耗时比例,但绝对是更优的选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:59:26