根据Pandas DataFrame中单列中的值创建多个列

时间:2016-11-30 16:40:56

标签: python pandas dataframe

我在数据帧中有一列(df ['Values'),有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 ['Values']中的行是A32,那么colA32应该是1,所有其他列应该是0,依此类推df ['Values']中的其余列。

我做了以下方式。但是,无论如何都要一次性完成,因为我有多个列,其中有几个代码要创建多个列。

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)

1 个答案:

答案 0 :(得分:1)

您可以通过多种方式实现这一目标:

pandas中有一个名为pd.get_dummies()的函数,它允许您将每个分类数据转换为二进制数据。将其应用于您的分类列,然后将获得的数据框与原始数据框连接起来。 Here是文档的链接。

另一种方法是使用库sklearn及其OneHotEncoder。它与上面完全相同,但对象不一样。您应该使用OneHotEncoder类的实例将其与您的分类数据相匹配。

对于您的情况,我使用pd.get_dummies(),使用起来更简单。