Dummy/One Dask 中逗号分隔列的热编码

Dummy/One Hot Encoding of Comma Separated column in Dask

我在 dask 数据框中有一列,其中包含不同类别的逗号分隔列表。我正在寻找完全按照此线程描述的方式复制 sklearn 的 MultiLabelBinarizer 或 pandas 函数 pd.get_dummies(',') 的功能:

是否完全没有办法像那里的一个答案那样做到这一点?如果我得到所有值的列表,有没有办法实现这个?

如果知道所有 类 的列表,那么 dask 就很容易了:

import dask.dataframe as dd
import pandas as pd
from sklearn.preprocessing import MultiLabelBinarizer

df = pd.DataFrame({"col_a": ["c, d", "e", "g", "e, g", "d, e"]})
all_classes = ["c", "d", "e", "g"]
mlb = MultiLabelBinarizer(classes=all_classes)

def myfunc(df):
    return pd.DataFrame(mlb.fit_transform(df["col_a"].values), columns=all_classes)

ddf = dd.from_pandas(df, npartitions=2)

ddf.map_partitions(myfunc, meta=pd.DataFrame(columns=all_classes)).compute()

如果列表未知,那么一个选择是首先遍历数据框,收集所有唯一值,然后将这些 类 整合到类似于上面的片段中。