我有一个如下所示的df:
> df.head()
Name Application
manager1 word
manager2 mail
manager2 internet
manager1 excel
manager3 word
我尝试以此创建二进制矩阵,但是找不到解决方案。
Name excel internet mail word
manager1 1 0 0 1
manager2 0 1 1 0
manager3 0 0 0 1
答案 0 :(得分:1)
将get_dummies
与max
一起使用:
df1 = pd.get_dummies(df.set_index('Name')['Application']).max(level=0).reset_index()
print (df1)
Name excel internet mail word
0 manager1 1 0 0 1
1 manager2 0 1 1 0
2 manager3 0 0 0 1
或聚合为max
:
df1 = (pd.get_dummies(df, columns=['Application'], prefix='', prefix_sep='')
.groupby('Name', as_index=False)
.max())
print (df1)
Name excel internet mail word
0 manager1 1 0 0 1
1 manager2 0 1 1 0
2 manager3 0 0 0 1