gpt4 book ai didi

python - 如何在 Pandas DF 中将具有特定值的特定列设置为新值?

转载 作者:行者123 更新时间:2023-12-01 01:59:12 25 4
gpt4 key购买 nike

我导入了一个 CSV 文件,其中包含 ID 和 Bee_type 两列。 bee_type 有两种类型 - 大黄蜂和蜜蜂。我正在尝试将它们转换为数字而不是名称;即,它不是大黄蜂,而是 1。

但是,我的代码将所有内容设置为 1。如何保持 ID 列的原始值并仅更改 bee_type 列?

# 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

最佳答案

我相信你需要map如果仅存在 2 个可能的值,则通过字典:

labels['bee_type'] = labels['bee_type'].map({'bumble_bee': 1, 'honey_bee': 2})

另一个解决方案是使用 numpy.where - 按条件设置值:

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

关于python - 如何在 Pandas DF 中将具有特定值的特定列设置为新值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49850895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com