如何在 Pandas DF 中将具有特定值的特定列设置为新值?
How do you set a specific column with a specific value to a new value in a Pandas DF?
我导入了一个包含两列 ID 和 Bee_type 的 CSV 文件。 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
如果只有 2 个可能的值存在,我相信你需要 map
字典:
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
据我了解,您想将名称转换为数字。如果是这种情况,请尝试使用 LabelEncoder。可以找到详细的文档sklearn LabelEncoder
我导入了一个包含两列 ID 和 Bee_type 的 CSV 文件。 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
如果只有 2 个可能的值存在,我相信你需要 map
字典:
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
据我了解,您想将名称转换为数字。如果是这种情况,请尝试使用 LabelEncoder。可以找到详细的文档sklearn LabelEncoder