这是我的熊猫数据
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']逐行执行操作有一些想法。 但是我认为这可能不是最佳方法。
致谢
答案 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