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