Python 如何创建一个新的数据框,其中每列表示前一个数据框行中实例的出现

Python 如何创建一个新的数据框,其中每列表示前一个数据框行中实例的出现,python,pandas,scikit-learn,Python,Pandas,Scikit Learn,假设我有一个数据帧: ---------------------------- | col1 | col2 | col3 | col4 ---------------------------- 1 | red | green | blue | yellow 2 | orange | purple | green | NaN 3 | pink | red | blue | green 4 | orange | pink | purple | gr

假设我有一个数据帧:

---------------------------- 
  | col1   | col2   | col3   | col4
----------------------------
1 | red    | green  | blue   | yellow 
2 | orange | purple | green  | NaN
3 | pink   | red    | blue   | green
4 | orange | pink   | purple | grey
5 | grey   | red    | NaN    | NaN
我想创建一个新的DataFrame,该DataFrame将每个可能的实例设置为一个新列,如果它出现在行中,则为1,如果不出现,则为0:

  | red | green | blue | yellow | orange | purple | pink | grey
---------------------------------------------------------------
1 | 1   | 1     | 1    | 1      | 0      | 0      | 0    | 0 
2 | 0   | 1     | 0    | 0      | 1      | 1      | 0    | 0 
3 | 1   | 1     | 1    | 0      | 0      | 0      | 1    | 0 
4 | 0   | 0     | 0    | 0      | 1      | 1      | 1    | 1 
5 | 1   | 0     | 0    | 0      | 0      | 0      | 0    | 1 
如何实现这一点?

对于始终
0,1
值,使用
max
,或者对于计数
1
可以使用
sum

df = pd.get_dummies(df, prefix='', prefix_sep='').max(level=0, axis=1)
print (df)
   grey  orange  pink  red  green  purple  blue  yellow
1     0       0     0    1      1       0     1       1
2     0       1     0    0      1       1     0       0
3     0       0     1    1      1       0     1       0
4     1       1     1    0      0       1     0       0
5     1       0     0    1      0       0     0       0
max
一起用于始终
0,1
值,或者可以使用
sum
进行计数
1

df = pd.get_dummies(df, prefix='', prefix_sep='').max(level=0, axis=1)
print (df)
   grey  orange  pink  red  green  purple  blue  yellow
1     0       0     0    1      1       0     1       1
2     0       1     0    0      1       1     0       0
3     0       0     1    1      1       0     1       0
4     1       1     1    0      0       1     0       0
5     1       0     0    1      0       0     0       0