Используйте str.contains
для сопоставления без учета регистра.
import re
df['Name'] = df['Name'].str.contains(r'anaphylaxis', flags=re.IGNORECASE).astype(int)
Или, точнее,
df['Name'] = df['Name'].str.contains(r'(?i)anaphylaxis').astype(int)
df
ID Name
0 84 1
1 1041 1
2 1194 0
3 1483 0
4 2226 1
5 2428 1
6 2831 0
7 4900 0
contains
полезно, если вы хотите также выполнить сопоставление на основе регулярных выражений. Хотя в этом случае вы, вероятно, можете полностью избавиться от регулярных выражений, добавив regex=False
для повышения производительности.
Однако, чтобы повысить производительность * , используйте понимание списка.
df['Name'] = np.array(['anaphylaxis' in x.lower() for x in df['Name']], dtype=int)
или даже лучше,
df['Name'] = [1 if 'anaphylaxis' in x.lower() else 0 for x in df['Name'].tolist()]
df
ID Name
0 84 1
1 1041 1
2 1194 0
3 1483 0
4 2226 1
5 2428 1
6 2831 0
7 4900 0