Pandas Group By 和 Get Dummies

Kri*_*lal 4 pivot-table python-3.x pandas dummy-variable pandas-groupby

我想让每个唯一值获得虚拟变量。想法是将数据框变成多标签目标。我该怎么做?

数据:

           ID                      L2
           A                 Firewall
           A                 Security
           B           Communications
           C                 Business
           C                 Switches
Run Code Online (Sandbox Code Playgroud)

期望输出:

ID   Firewall  Security  Communications  Business   Switches
 A      1          1             0              0         0
 B      0          0             1              0         0
 C      0          0             0              1         1
Run Code Online (Sandbox Code Playgroud)

我试过,pd.pivot_table但它需要一个列来聚合。我也试过这个链接的答案,但它对值求和而不是仅仅变成二进制虚拟列。我将非常感谢您的帮助。非常感谢!

Qua*_*ang 6

crosstab,然后转换为布尔值:

pd.crosstab(df['ID'],df['L2']).astype(bool)
Run Code Online (Sandbox Code Playgroud)

输出:

L2  Business  Communications  Firewall  Security  Switches
ID                                                        
A      False           False      True      True     False
B      False            True     False     False     False
C       True           False     False     False      True
Run Code Online (Sandbox Code Playgroud)


WeN*_*Ben 4

set_index然后让我们get_dummies,因为每个 ID 中有多个重复项,所以我们sum需要level = 0

s = df.set_index('ID')['L2'].str.get_dummies().max(level=0).reset_index()
Out[175]: 
  ID  Business  Communications  Firewall  Security  Switches
0  A         0               0         1         1         0
1  B         0               1         0         0         0
2  C         1               0         0         0         1
Run Code Online (Sandbox Code Playgroud)