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

Python中是否有类似R data.table :=的多列赋值简化方法

Python中R data.table := 多列赋值的等价实现

Python生态下有两种成熟的方案可以实现和R data.table := 运算符完全等价的一行多列赋值效果,无需逐行编写赋值语句:

1. Pandas原生assign方法(无需额外安装依赖)

Pandas内置的assign方法支持一次性批量生成/修改多个列,你的示例可以直接改写为一行逻辑:

df = df.assign(
    Col_A = lambda x: x.A / x.B,
    Col_B = lambda x: x.C / x.D,
    Col_C = lambda x: x.E / x.F * 1000000,
    Col_D = lambda x: x.G / x.H * 1000000
)

说明:assign默认返回修改后的新DataFrame,直接赋值给原变量即可覆盖旧数据。如果使用pandas 2.1.0及以上版本,可省略lambda表达式,直接引用列名运算:

df = df.assign(
    Col_A = df.A / df.B,
    Col_B = df.C / df.D,
    Col_C = df.E / df.F * 1000000,
    Col_D = df.G / df.H * 1000000
)

2. Python datatable库(完全对齐R data.table语法)

如果你更习惯R data.table的写法,可以直接安装Python官方的datatable库,语法和R端几乎完全一致,计算效率比pandas更高,原生支持原地多列赋值:
首先安装依赖:

pip install datatable

你的示例可以改写为和R端高度相似的写法:

import datatable as dt
from datatable import f

df[:, dt.update(
    Col_A = f.A / f.B,
    Col_B = f.C / f.D,
    Col_C = f.E / f.F * 1000000,
    Col_D = f.G / f.H * 1000000
)]

说明:这里的dt.update功能和R的:=完全等价,会直接原地修改对象,不需要重新赋值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:36:05