[英]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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.