我有一个表,其中一列是二进制特征数组,当存在该特征时它们就在那里。
我想在这些行上训练逻辑模型,但不能以所需的格式获取数据,其中每个特征值是它自己的具有1或0值的列。
示例:
one_to_99 ::= tens
| tens one_to_9
| tens HYPHEN one_to_9
;
我希望将其格式化为
DbContext.Database.EnsureCreate()
似乎会内置一些功能来实现这一目标,但我无法想象这个转换被称为什么来自己做更好的搜索。
答案 0 :(得分:4)
您可以先将列表转换为列,然后使用get_dummies()方法:
In [12]: df
Out[12]:
id feature_values
0 1 [HasPaws, DoesBark, CanFetch]
1 2 [HasPaws, CanClimb, DoesMeow]
In [13]: (pd.get_dummies(df.set_index('id').feature_values.apply(pd.Series),
...: prefix='', prefix_sep='')
...: .reset_index()
...: )
Out[13]:
id HasPaws CanClimb DoesBark CanFetch DoesMeow
0 1 1 0 1 1 0
1 2 1 1 0 0 1
答案 1 :(得分:3)
另一种选择是循环遍历feature values
列,并使用列表中的值作为索引从每个单元格构造一个序列。通过这种方式,pandas会将系列扩展为数据框,其中index
为标题:
pd.concat([df['id'],
(df['feature values'].apply(lambda lst: pd.Series([1]*len(lst), index=lst))
.fillna(0)], axis=1)
答案 2 :(得分:2)