python - 多标签二值化器 : float object not iterable

标签 python pandas machine-learning scikit-learn

我有以下数据框

df[['row_num','set_id']].head()

row_num     path_id_set
988681      [31672, 0]
988680      [31965, 0]
988679      [0, 78464]

我正在尝试使用多标签二值化器,但失败并出现错误代码 float object not iterable

from sklearn.preprocessing import MultiLabelBinarizer
mlb = MultiLabelBinarizer()
mlb.fit_transform(df['set_id'].str.split(','))

TypeError: 'float' object is not iterable

最佳答案

我认为问题是缺少值,您可以使用:

print (df)
   row_num     set_id
0   988681        NaN
1   988680  [31965,0]
2   988679  [0,78464]

from sklearn.preprocessing import MultiLabelBinarizer
mlb = MultiLabelBinarizer()

#create boolean mask matched non NaNs values
mask = df['set_id'].notnull()

#filter by boolean indexing
arr = mlb.fit_transform(df.loc[mask, 'set_id'].dropna().str.strip('[]').str.split(','))

#create DataFrame and add missing (NaN)s index values
df = (pd.DataFrame(arr, index=df.index[mask], columns=mlb.classes_)
               .reindex(df.index, fill_value=0))

print (df)
   0  31965  78464
0  0      0      0
1  1      1      0
2  1      0      1

关于python - 多标签二值化器 : float object not iterable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52498640/

相关文章:

python - 当索引列包含重复项时,DataFrame 列中的 Pandas 系列

python - 计算 Pandas DataFrame 中每个组的状态变化

python - 从 pandas df 中的特定值返回系列

python - 无法同时连接超过 6 个网络摄像机

python - pd.corrwith 在具有不同列名的 Pandas 数据帧上

python - 我不确定如何使用 Scikit Learn 解释此分类的准确性

machine-learning - 标记数据和未标记数据有什么区别?

python - 使用 hyperopt 进行评估和预测的不同结果指标

python - pymysql连接线程安全吗? pymysql游标线程安全吗?

Python 查找文件路径之间的差异