Python 如何将具有特定值的特定列设置为数据集中的新值?

Python 如何将具有特定值的特定列设置为数据集中的新值?,python,pandas,for-loop,conditional,Python,Pandas,For Loop,Conditional,我导入了一个CSV文件,它有两列ID和Bee_类型。蜜蜂有两种类型:大黄蜂和蜜蜂。我试图把它们转换成数字而不是名字;i、 它说的不是大黄蜂,而是1 但是,我的代码将所有内容都设置为1。如何保持ID列的原始值,而只更改bee_类型列 # load the labels using pandas labels = pd.read_csv("bees/train_labels.csv") #Set bumble_bee to one for index in range(len(labels)):

我导入了一个CSV文件,它有两列ID和Bee_类型。蜜蜂有两种类型:大黄蜂和蜜蜂。我试图把它们转换成数字而不是名字;i、 它说的不是大黄蜂,而是1

但是,我的代码将所有内容都设置为1。如何保持ID列的原始值,而只更改bee_类型列

# load the labels using pandas
labels = pd.read_csv("bees/train_labels.csv")

#Set bumble_bee to one
for index in range(len(labels)):
    labels[labels['bee_type'] == 'bumble_bee'] = 1
我认为,如果只有两个可能的值存在,则需要字典:

labels['bee_type'] = labels['bee_type'].map({'bumble_bee': 1, 'honey_bee': 2})
另一种解决方案是使用-按条件设置值:

labels['bee_type'] = np.where(labels['bee_type'] == 'bumble_bee', 1, 2)
您的代码可以工作,但为了提高性能,请稍微修改它-删除循环并添加
loc

labels.loc[labels['bee_type'] == 'bumble_bee'] = 1
print (labels)
   ID   bee_type
0   1          1
1   1  honey_bee
2   1          1
3   3  honey_bee
4   1          1
样本

labels = pd.DataFrame({
    'bee_type': ['bumble_bee','honey_bee','bumble_bee','honey_bee','bumble_bee'],
    'ID': list(range(5))
})
print (labels)
   ID    bee_type
0   0  bumble_bee
1   1   honey_bee
2   2  bumble_bee
3   3   honey_bee
4   4  bumble_bee

labels['bee_type'] = labels['bee_type'].map({'bumble_bee': 1, 'honey_bee': 2})
print (labels)
   ID  bee_type
0   0         1
1   1         2
2   2         1
3   3         2
4   4         1

据我所知,你想把名字转换成数字。如果是这种情况,请尝试LabelEncoder。有关详细文档,请参见

@cᴏʟᴅsᴘᴇᴇᴅ 谢谢你,随时都可以,我的朋友!