T T*_*T T 1 python csv python-2.7 pandas
我有一个包含以下字段的csv文件(delimiter =,)
filename labels
xyz.png cat
pqz.png dog
abc.png mouse
Run Code Online (Sandbox Code Playgroud)
有一个包含所有类的列表
data-classes = ["cat", "dog", "mouse"]
Run Code Online (Sandbox Code Playgroud)
问题:如何用标签数据类的索引替换csv中的字符串标签(即,如果label == catlabel应该更改为0)并将其保存在csv文件中。
假设列表中存在所有类,则可以使用apply并调用index列表来返回该类在列表中的顺序位置:
In[5]:
df['labels'].apply(data_classes.index)
Out[5]:
0 0
1 1
2 2
Name: labels, dtype: int64
Run Code Online (Sandbox Code Playgroud)
但是,定义映射的字典并通过mapIMO 传递给IMO会更快,因为这是赛顿化的,因此应该更快:
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
Run Code Online (Sandbox Code Playgroud)
如果不存在类,则NaN返回