我有一个包含以下字段的csv文件(delimiter =,)
filename labels
xyz.png cat
pqz.png dog
abc.png mouse
有一个包含所有类的列表
data-classes = ["cat", "dog", "mouse"]
问题:如何使用标签data-classes的索引替换csv中的字符串标签(例如,如果label == cat
然后标签应该更改为0)并将其保存在csv文件中。
答案 0 :(得分:5)
假设列表中存在所有类,您可以使用apply
执行此操作,并在列表中调用index
以返回列表中类的序号位置:
In[5]:
df['labels'].apply(data_classes.index)
Out[5]:
0 0
1 1
2 2
Name: labels, dtype: int64
但是,定义映射的dict会更快,并将其传递给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