Кто-нибудь может понять, почему это не работает?
Это пытается сделать;если имя столбца содержит текст 'Andy', тогда создайте столбец с именем Andy и установите для этой строки = 1
df.loc[df['Name'].str.contains(['Andy']),'Andy']=1
pd.Series.str.contains требует для своего pat аргумента "Последовательность символов или регулярное выражение", не список.
pd.Series.str.contains
pat
Просто используйте логическое назначение и преобразуйтедо int.Это установит несопоставленные строки в 0.Например:
int
0
# Name includes 'Andy' df['Andy'] = df['Name'].str.contains('Andy').astype(int) # Name includes 'Andy' or 'George' df['Andy'] = df['Name'].str.contains('Andy|George').astype(int)
Вы должны удалить список, нужна только строка:
df.loc[df['Name'].str.contains('Andy'),'Andy'] = 1
Для цепочки нескольких значений: |:
|
df.loc[df['Name'].str.contains('Andy|George'),'Andy'] = 1