Python - Pandas - DataFrame - 根据条件将单列分解为多个布尔列

Tro*_*tis 5 python boolean explode dataframe pandas

早上好,伙计们,

基于某些条件(在这种情况下为 str.contains),任何将数据框列分解为带有布尔标志的多列的 Pythonic 方法?

假设我有这个:

Position Letter 
1        a      
2        b      
3        c      
4        b      
5        b
Run Code Online (Sandbox Code Playgroud)

我想实现这一目标:

Position Letter is_a     is_b    is_C
1        a      TRUE     FALSE   FALSE
2        b      FALSE    TRUE    FALSE
3        c      FALSE    FALSE   TRUE
4        b      FALSE    TRUE    FALSE
5        b      FALSE    TRUE    FALSE 
Run Code Online (Sandbox Code Playgroud)

可以通过 'abc' 进行循环并显式创建新的 df 列,但想知道 pandas 中是否已经存在某些内置方法。可能值的数量,因此新列的数量是可变的。

感谢致敬。

Max*_*axU 7

使用Series.str.get_dummies()

In [31]: df.join(df.Letter.str.get_dummies())
Out[31]:
   Position Letter  a  b  c
0         1      a  1  0  0
1         2      b  0  1  0
2         3      c  0  0  1
3         4      b  0  1  0
4         5      b  0  1  0
Run Code Online (Sandbox Code Playgroud)

或者

In [32]: df.join(df.Letter.str.get_dummies().astype(bool))
Out[32]:
   Position Letter      a      b      c
0         1      a   True  False  False
1         2      b  False   True  False
2         3      c  False  False   True
3         4      b  False   True  False
4         5      b  False   True  False
Run Code Online (Sandbox Code Playgroud)