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()
如果列表未知,那么一个选择是首先遍历数据框,收集所有唯一值,然后将这些 类 整合到类似于上面的片段中。
我在 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()
如果列表未知,那么一个选择是首先遍历数据框,收集所有唯一值,然后将这些 类 整合到类似于上面的片段中。