我有一个熊猫数据框:
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 个唯一值。
我有一个熊猫数据框:
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
用于创建Series
,然后list
转换为string
by 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