我在数据帧中有一列(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)
答案 0 :(得分:1)
您可以通过多种方式实现这一目标:
在pandas
中有一个名为pd.get_dummies()
的函数,它允许您将每个分类数据转换为二进制数据。将其应用于您的分类列,然后将获得的数据框与原始数据框连接起来。
Here是文档的链接。
另一种方法是使用库sklearn
及其OneHotEncoder
。它与上面完全相同,但对象不一样。您应该使用OneHotEncoder
类的实例将其与您的分类数据相匹配。
对于您的情况,我使用pd.get_dummies()
,使用起来更简单。