使用列中的数据创建新列
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
所以这是我在 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