Skip to main content
 首页 » 编程设计

python之如何将字符串标签转换为数值

2025年05月04日40fff_TT

我有一个包含以下字段的 csv 文件(分隔符=,)

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

有一个包含所有类的列表

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

问题:如何用标签数据类的索引替换 csv 中的字符串标签(即如果 label == cat 那么标签应该更改为 0 )并将其保存在 csv 文件中。

请您参考如下方法:

假设所有类都出现在您的列表中,您可以使用 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 化的,所以应该更快:

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