2017-06-12 83 views
0

我有一個CSV文件(分隔符=)包含以下字段如何串標籤轉換爲數值

filename labels 
xyz.png cat 
pqz.png dog 
abc.png mouse   

有包含所有類

data-classes = ["cat", "dog", "mouse"] 

問題的列表:如何將csv中的字符串標籤替換爲標籤數據類的索引(即,如果label == cat,則標籤應該更改爲0)並將其保存在csv文件中。

+0

這是你在找什麼?無論如何,我會建議使用熊貓reada並編寫csv http://fastml.com/converting-categorical-data-into-numbers-with-pandas-and-scikit-learn/ – Roelant

+0

相關和可能的重複:https:/ /stackoverflow.com/questions/31133192/usng-same-label-encoder-to-test-dataset-or-new-label-encoder – EdChum

+0

LabelEncoder不起作用 –

回答

3

假設所有的類都是出現在你的列表,你可以做到這一點使用apply,並呼籲index名單上返回列表類的順序位置:

In[5]: 
df['labels'].apply(data_classes.index) 

Out[5]: 
0 0 
1 1 
2 2 
Name: labels, dtype: int64 

但是,它會更快定義你的映射的字典,並通過這樣的一個使用map IMO,因爲這是用Cython-ISED所以應該會更快:

In[7]: 
d = dict(zip(data_classes, range(0,3))) 
d 

Out[7]: {'cat': 0, 'dog': 1, 'mouse': 2} 

In[8]: 
df['labels'].map(d, na_action='ignore') 

Out[8]: 
0 0 
1 1 
2 2 
Name: labels, dtype: int64 

如果有類不存在,那麼NaN返回