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
我有一个 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