2015-09-04 15 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。 (我上面的例子是正確的。)

如果數據已經加載,就像你的情況一樣,更改一個表的描述符而不丟失數據會更復雜。如果你真的需要,我可以告訴你如何,但我猜你不知道。如果你這樣做,你會得到兩個完全無關的表。

相關問題