1

我有一个熊猫数据框:

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 个唯一值。

4

1 回答 1

2

我认为您可以stack用于创建Series,然后list转换为stringby astype、remove []bystrip和 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
于 2016-10-27T10:53:36.057 回答