将1列数据转换为多个热编码

2024-05-19 12:25:22 发布

您现在位置:Python中文网/ 问答频道 /正文

作为问题的一个例子,假设我们有一个数据帧:

    Name Class
0   Aci  FB 
1   Dan  TWT
2   Ann  GRS
3   Aci  GRS
4   Dan  FB 

结果数据帧将是 测向

   Name  FB   TWT  GRS
0  Aci   1    0   1
0  Dan   1    1   0
0  Ann   0    0   1

Tags: 数据namefbclass例子danannaci
2条回答

^{}^{}一起使用,并聚合maxsum

#always 0,1 in output
df1 = pd.get_dummies(df.set_index('Name')['Class']).max(level=0).reset_index()
#if need count values
#df1 = pd.get_dummies(df.set_index('Name')['Class']).sum(level=0).reset_index()

print (df1)
  Name  FB  GRS  TWT
0  Aci   1    1    0
1  Dan   1    0    1
2  Ann   0    1    0

也可以使用^{}^{}来实现:

df.Class.str.get_dummies().groupby(df['Name']).max().reset_index()

[输出]

  Name  FB  GRS  TWT
0  Aci   1    1    0
1  Ann   0    1    0
2  Dan   1    0    1

相关问题 更多 >