2016-11-30 101 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(),使用起来更简单。