使用 Python Scripting Widget 在 Orange 中创建新列

数据挖掘 Python 橙色3
2022-02-15 22:38:01

这是一个相当基本的问题。您如何在 Orange 中创建一个新列 - 基于现有列?

例如:

NewCol = 2 * ExistingColumn

或者

NewCol = len(ExistingColumn)

我想使用 Python 脚本小部件 - 而不是功能小部件。

1个回答

你会认为这是基本的。到目前为止,我还没有发现它是这样的。这是一个对我有用的例子。我相信它可以简单得多。:

from Orange.data import ContinuousVariable, DiscreteVariable, Domain

out_data = in_data.copy()
var1 = ContinuousVariable("NewCol")
domain = out_data.domain
new_domain = Domain(attributes=domain.attributes + (var1,), metas=domain.metas, class_vars=domain.class_vars)
out_data = out_data.transform(new_domain)

i2 = out_data.domain.index(out_data.domain["NewCol"])
i1 = out_data.domain.index(out_data.domain["ExistingColumn"])
out_data.X[:, i2] = out_data.X[:,i1] * 2