使用列中的数据创建新列

时间:2018-11-07 16:04:32

标签: python string pandas dataframe one-hot-encoding

这是我的熊猫数据

      Movie        Tags
0  War film  tank;plane
1  Spy film   car;plane

我想用0和1的标记列创建一个新列,并在列名中添加一个像'T_'这样的前缀。

赞:

      Movie        Tags T_tank T_plane T_car
0  War film  tank;plane      1       1     0
1  Spy film   car;plane      0       1     1

例如,我对如何使用split(“;”)和df.loc [:,'T_plane']逐行执行操作有一些想法。 但是我认为这可能不是最佳方法。

致谢

2 个答案:

答案 0 :(得分:2)

使用sklearn库:

from sklearn.preprocessing import MultiLabelBinarizer

mlb = MultiLabelBinarizer()

res = df.join(pd.DataFrame(mlb.fit_transform(df['Tags'].str.split(';')),
                           columns=mlb.classes_).add_prefix('T_'))

print(res)

      Movie        Tags  T_car  T_plane  T_tank
0  War film  tank;plane      0        1       1
1  Spy film   car;plane      1        1       0

答案 1 :(得分:1)

使用.str.get_dummies

df.join(df.Tags.str.get_dummies(';').add_prefix('T_'))

      Movie        Tags  T_car  T_plane  T_tank
0  War film  tank;plane      0        1       1
1  Spy film   car;plane      1        1       0