【问题标题】:Dummy/One Hot Encoding of Comma Separated column in DaskDask中逗号分隔列的虚拟/一热编码
【发布时间】:2021-11-16 22:28:35
【问题描述】:

我在 dask 数据框中有一列,其中包含不同类别的逗号分隔列表。我希望复制 sklearn 的 MultiLabelBinarizer 或 pandas 函数 pd.get_dummies(',') 的功能,正如该线程所描述的那样:Create dummies from column with multiple values in dask

正如那里的一个答案所说,绝对没有办法做到这一点?如果我得到所有值的列表,有没有办法实现这一点?

【问题讨论】:

    标签: python pandas scikit-learn dask


    【解决方案1】:

    如果所有类的列表都已知,那么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()
    

    如果列表未知,那么一个选项是首先通过数据框,收集所有唯一值,然后将这些类集成到类似于上述的 sn-p 中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-16
      • 2017-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多