使用列中的数据创建新列

create new column with data in a column

所以这是我在 pandas

中的数据
      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']。 但我认为这可能不是最佳方式。

此致

.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

使用 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