Pandas Python将listoflist列转换为多个列

2024-03-28 09:29:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我想改造一下这个测向仪

pd.DataFrame({"l1": [["fr en","en"]],
              "l2": [["fr en","in","it"]],
              "l3": [["he","es","fi"]],
              "l4": [["es"]]}).T
>> l1  [fr en, en]
   ...
   l4  [es]

本DTM:

^{pr2}$

我效率低下的方法是chain所有可能的值,然后像这样计数向量化

langs = set(chain(*df["lang"]))
pd.DataFrame(data=df["lang"].apply(lambda x: [1 if lang in x else 0 for lang in langs]).tolist(), columns=langs)

PS:我不想" ".join()列表,因为它可能表示信息的丢失,正如您在^{中看到的那样


Tags: inl1chaindataframedflangesit
1条回答
网友
1楼 · 发布于 2024-03-28 09:29:42

我认为需要^{}

from sklearn.preprocessing import MultiLabelBinarizer

mlb = MultiLabelBinarizer()
df = pd.DataFrame(mlb.fit_transform(df[0]),columns=mlb.classes_, index=df.index)
print (df)
    en  es  fi  fr en  he  in  it
l1   1   0   0      1   0   0   0
l2   0   0   0      1   0   1   1
l3   0   1   1      0   1   0   0
l4   0   1   0      0   0   0   0

或者,如果数据中不存在此分隔符,则可以使用带有join by |的slowier解决方案:

^{pr2}$

相关问题 更多 >