我有一个包含以下字段的 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
