[英]Categorical to Binary - what am I doing wrong?
我正在從“成人收入”數據集(<50K和> = 50K)轉換目標列,並且我希望在<50K時為零,在大於或等於50K時為1。
當我運行以下代碼時,它會創建兩列,而我希望在該列中只是將<50K列出的地方替換為1,而將列出> 50K的地方替換為0。
cols_to_transform = [ 'Target' ]
df_with_dummies = pd.get_dummies(columns = cols_to_transform, data=data)
> Native Country Target_<=50K Target_>50K
>0 United-States 1 0
>1 United-States 1 0
>2 United-States 1 0
>3 United-States 1 0
>4 Cuba 1 0
關於我要去哪里的問題以及如何將這種分類映射到僅列為“ Target”的任何想法?
假設您要引用此數據集 ,則可以使用map方法創建該列:
data [“ Target_binary”] = data [“ Target”]。map(lambda x:如果x ==“ >> 50K,則為1,否則為0)
使用字典replace
並assign
給新列:
dict = {'<=50K':1,'>50K':0}
dfout = df.assign(target_bin=df['target'].replace(dict)
pd.get_dummies
應該將列中的每個原始值的唯一列拆分為一列。 您只想將布爾值列轉換為整數零或一
data['Target_binary'] = data.Target.eq('>50K').astype(int)
假設數據框中有兩個分類值“ a”,“ b”:
import pandas as pd
import numpy as np
data = pd.DataFrame({"Target":pd.Series(np.random.randn(5)*50000), "Value":["a","b","a","a","b"]})
cols_to_transform = ["Values"]
df_with_dummies = pd.get_dummies(columns = cols_to_transform, data=data)
然后,如果要將“ a”編碼為1,將“ b”編碼為0,則將獲得df_with_dummies的以下內容:
Target Value_a Value_b
0 4329.130662 1 0
1 -64012.592710 0 1
2 -21050.741809 1 0
3 -32438.538928 1 0
4 13843.408700 0 1
Value_a列正是您要查找的內容。 或者,您可以執行以下操作:
data["result"] = (data["Value"]=="a").astype(int)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.