Python 基于DataFrame中单列中的值创建多列

Python 基于DataFrame中单列中的值创建多列,python,pandas,dataframe,Python,Pandas,Dataframe,我在数据框(df['Values')中有一列,有1000行,重复代码为A30、A31、A32、A33、A34。我想在同一数据框(df)中创建五个单独的列,标题为colA30、colA31、colA32、colA33、colA34,新创建的五列中的值为0或1,这五列是基于该行是否为df['Values'中的任何一个代码创建的 例如:df Values colA30 colA31 colA32 colA33 colA34 A32 0 0 1 0

我在数据框(df['Values')中有一列,有1000行,重复代码为A30、A31、A32、A33、A34。我想在同一数据框(df)中创建五个单独的列,标题为colA30、colA31、colA32、colA33、colA34,新创建的五列中的值为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)

您可以通过多种方式执行此操作:

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

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


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

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

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

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


对于您的情况,我会使用
pd.get\u dummies()
,它使用起来更简单。

查找
pd.get\u dummies(df.Values)
?查找
pd.get\u dummies(df.Values)