我有一个表,其中一列是二进制特性的数组,当该特性存在时,它们就在那里。

例子:

id    feature values
1     ['HasPaws', 'DoesBark', 'CanFetch']
2     ['HasPaws', 'CanClimb', 'DoesMeow']

我想把它改成
id    HasPaws    DoesBark    CanFetch    CanClimb    DoesMeow
1     1          1           1           0           0
2     1          0           0           1           0

似乎会有一些内置的功能来实现这一点,但我想不出这个转换是什么叫自己做一个更好的搜索。

最佳答案

You can first convert lists to columns and then use get_dummies() method:

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

10-06 10:33