0

R我在我使用的地方有这段代码,我data.table打算将它翻译Pythondatatable. 它使用每个现有列的值除以总数的平均值来创建列。一种标准化。

dataset[ , paste0( cols, suffix) := lapply( .SD,  function(x){ x/mean(x, na.rm=TRUE)} ), 
         by= col_A, 
         .SDcols= cols]
4

2 回答 2

2

根据文档,update功能和del操作员就地操作。如果有很多列,这也可以在循环中完成

DT[:, update(y_suffix = f.y/dt.mean(f.y), v_suffix = f.v/dt.mean(f.v)), by("x")]

-输出

在此处输入图像描述

数据

from datatable import dt, f, g, by, update

DT = dt.Frame(x = ["b"]*3 + ["a"]*3 + ["c"]*3,
              y = [1, 3, 6] * 3,
              v = range(1, 10))
于 2022-02-05T18:34:35.493 回答
1
from datatable import f,by,update,dt

dataset=dt.Frame({'col_A':[0,0,1,1], 'col_B':[1,2,3,4], 'col_C':[5,6,7,8]})
cols = dataset[:,[int,float]].names
dataset[:, update(**{col+'_norm': f[col]/dt.mean(f[col]) for col in cols if col!='col_A'}), by(f.col_A)]
于 2022-02-05T18:59:38.350 回答