繁体   English   中英

将 CSV 读入 Pandas 后 MultiLabelBinarizer() 的格式问题

[英]Formatting issues with MultiLabelBinarizer() after reading CSV into Pandas

我想使用 MultiLabelBinarizer() 准备一个包含应用于文本的标签的列。 例如,根据标题预测电影可能属于哪些类型。

当值预定义为 DataFrame 中的列表时,MultiLabelBinarizer() 效果很好:

import pandas as pd
from sklearn.preprocessing import MultiLabelBinarizer

df = pd.DataFrame({"Text": ["Blah blah", "Blah blah blah"],
              "Tag": [["Hi", "Hello"], ["Hey"]]})

mlb = MultiLabelBinarizer()
print(mlb.fit_transform(df["Tag"]))
print(mlb.classes_)

array([[1, 0, 1],
       [0, 1, 0]])

array(['Hello', 'Hey', 'Hi'], dtype=object)

但是,当我将 CSV 或 Excel 文件读入 Pandas 时,这种方法会失败。 例如,如果我制作一个具有相同结构的简单 CSV :

CSV 示例

并将其读入 Pandas + 使用 MultiLabelBinarizer():

df = pd.read_csv(filepath)

mlb = MultiLabelBinarizer()
print(mlb.fit_transform(df["Tag"]))
print(mlb.classes_)

它将每个字符视为单独的 class 并且不再将 output 视为 array() :

[[1 1 1 1 1 1 1 1 0]
 [0 1 0 1 1 0 0 0 1]]

[' ' '"' ',' 'H' 'e' 'i' 'l' 'o' 'y']

鉴于此限制,我如何从 CSV 或 Excel 文件中读取并保留 MultiLabelBinarizer() 的功能?

添加.str.split(",")

mlb.fit_transform(df["Tag"].str.split(","))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM