0

我想从一个文件中读取数据,将其加载到两个Orange.data.Tables 并更改其中一个表中的列名。这是代码:

import Orange
data = Orange.data.Table("sample_data.tab")

data2 = Orange.data.Table(data)
data2.domain = Orange.data.Domain(data.domain)

for inst in data2.domain:
    data2.domain[inst].name = '__' + data2.domain[inst].name

但是,由于某种原因,两个表中的列名都发生了变化。如何仅更改其中一个表中的列名?

4

1 回答 1

1

Orange 重用列描述符。这是必需的,以便如果您从两个文件加载数据并使用一个来拟合模型,您可以使用另一个文件来测试它。通常,如果列具有相同的名称和类型,它也将具有相同的描述符。

createNewOn=0您可以通过在加载数据时添加来避免这种情况。

d1 = Orange.data.Table("iris")
d2 = Orange.data.Table("iris", createNewOn=0)

整个故事在这里描述:http: //docs.orange.biolab.si/reference/rst/Orange.data.table.html和这里:http ://docs.orange.biolab.si/reference/rst/Orange .feature.descriptor.html#variable-descriptor-reuse

文档中有错误:create_new_on应该是createNewOn. (我上面的例子是正确的。)

如果数据已经加载,就像你的情况一样,在不丢失数据的情况下更改一个表的描述符会更复杂。如果你真的需要它,我可以告诉你怎么做,但我猜你不需要。如果你这样做,你会得到两个完全不相关的表。

于 2015-09-07T15:13:35.603 回答