2016-11-30 135 views
0

多個列我在數據幀的柱(DF [「值」)與1000行具有重複碼A30,A31,A32,A33,A34。我想創建五個單獨的列,其標題colA30,colA31,colA32,colA33,colA34在同一個數據框(df)中,在新創建的五列中創建值爲0或1,根據行是否是df ['Values 「]。創建熊貓基於在單個列值數據幀

防爆:DF

Values colA30 colA31 colA32 colA33 colA34 
A32  0  0  1  0  0 
A30  1  0  0  0  0 
A31  0  1  0  0  0 
A34  0  0  0  0  1 
A33  0  0  0  1  0 

因此,如果DF行[「值」]是A32則colA32應該是1和所有其他列應該是0的等在DF [列休息「價值」。

我做了以下方法。但是,無論如何要一次性完成它,因爲我有多個列,其中有多個代碼,需要創建多個列。

df['A30']=df['Values'].map(lambda x : 1 if x=='A30' else 0) 

df['A31']=df['Values'].map(lambda x : 1 if x=='A31' else 0) 

df['A32']=df['Values'].map(lambda x : 1 if x=='A32' else 0) 

df['A33']=df['Values'].map(lambda x : 1 if x=='A33' else 0) 

df['A34']=df['Values'].map(lambda x : 1 if x=='A34' else 0) 
+3

尋找'pd.get_dummies(df.Values)'? – Psidom

回答

0

您可以在許多方面做到這一點:

pandas有一個叫pd.get_dummies()功能,可以讓你的每個分類數據轉換成二進制數據。將其應用到您的分類列,然後連接使用原始數據框獲得的數據框。 Here是鏈接到文檔。

另一種方法是使用圖書館sklearn及其OneHotEncoder。它和上面的完全一樣,但是對象不一樣。你應該使用你的OneHotEncoder類的實例來適應你的分類數據。

對於您的情況,我會使用pd.get_dummies(),使用起來更簡單。

相關問題