onHotEncoding 并在 pandas dataFrame 中列出

onHotEncoding and lists in a pandas dataFrame

我有一个 pandas 数据框:

import pandas as pd    
d={'col1':[[1,2,3],[4,5,6]],'col2':[[7,8,9],[10,11,12]]}
df=pd.DataFrame(d)

这导致:

但是我想实现一个 onHotEncoder,它将每个包含数据帧单元格的列表视为一个 字符串 ,并且我希望它处理每个 独立值

我将如何实施?我的实际 dataFrame 包含 500 个项目的列表,并具有 4000 个唯一值。

我想你可以使用 stack for creating Series, then cast list to string by astype, remove [] by strip and last call get_dummies:

df = df.stack().astype(str).str.strip('[]').str.get_dummies(sep=', ')
print (df)
        1  10  11  12  2  3  4  5  6  7  8  9
0 col1  1   0   0   0  1  1  0  0  0  0  0  0
  col2  0   0   0   0  0  0  0  0  0  1  1  1
1 col1  0   0   0   0  0  0  1  1  1  0  0  0
  col2  0   1   1   1  0  0  0  0  0  0  0  0

只有一栏:

df = df['col1'].astype(str).str.strip('[]').str.get_dummies(sep=', ') 
print (df)
   1  2  3  4  5  6
0  1  1  1  0  0  0
1  0  0  0  1  1  1