Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将字符串标签转换为数值_Python_Python 2.7_Csv_Pandas - Fatal编程技术网

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

Python 如何将字符串标签转换为数值,python,python-2.7,csv,pandas,Python,Python 2.7,Csv,Pandas,我有一个csv文件(分隔符=,)包含以下字段 filename labels xyz.png cat pqz.png dog abc.png mouse 有一个包含所有类的列表 data-classes = ["cat", "dog", "mouse"] 问题:如何用标签数据类的索引替换csv中的字符串标签(即,如果label==cat,则标签应更改为0)并将其保存在csv文件中。假设列表中存在所有类,则可以使用apply并调用列表中的index返回类在列表中的顺

我有一个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
但是,定义映射的dict并将其传递给use
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

这是您要找的吗?无论如何,我建议使用pandas来读写csv相关的可能的副本:LabelEncoder不适用于
。apply(data_classes.index)
我得到
TypeError:“RangeIndex”对象是不可调用的
@RishabhAgrahari这对我仍然有效,所以我不能评论,除非你发布一个带有完整可复制示例的新问题