我有一个看起来像这样的pandas DataFrame:
Col1 Col2
0 A code1
1 B code1
2 C code2
3 A code1
我想在第2列中为每个唯一代码值向DataFrame添加一列,并在与代码值匹配的列中放入1,在所有其他新创建的列中放入0。换句话说,我想要一个看起来像这样的DataFrame:
Col1 Col2 Code1 Code2
0 A code1 1 0
1 B code1 1 0
2 C code2 0 1
3 A code1 1 0
以下代码适用于此小数据样本:
def assign_code1(row):
if row['Col2'] == 'code1' : return 1
else :return 0
def assign_code2(row):
if row['Col2'] == 'code2' : return 1
else :return 0
df['Code1'] = df.apply(assign_code1 ,axis=1)
df['Code2'] = df.apply(assign_code2 ,axis=1)
但是,我真的很讨厌这段代码,因为:
我希望有一些代码可以获取Col2中所有唯一值的列表,为每个值创建一列,并正确填充这些列中的所有1和0。有没有一种优雅的方法可以做到这一点?