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