2015-09-04 49 views
0

我想从一个文件中读取数据,将其加载到两个Orange.data.Table,并在其中一个表中更改列名。下面的代码:橙色 - 如何将一个文件加载到两个单独的表中?

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 

但是,出于某种原因,列名更改表。如何仅更改其中一个表中的列名称?

回答

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。 (我上面的例子是正确的。)

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

相关问题