if you want to rename pandas dataframe column with the new created List_of_dummy_names (elements with 'BINARY_'+column_name) then you can follow my answer.
lets say
cv = list(df.columns.values)
#cv = ['aword', 'bword', 'c']
search_String = 'word'
replace_dict = dict(zip(cv,['BINARY_'+x if search_String in x else x for x in cv]))
#{'aword': 'BINARY_aword', 'bword': 'BINARY_bword', 'c': 'c'}
#Then in pandas dataframe rename method, use this dictinary
new_df = df.rename(col=replace_dict)
Also check if you could use the below
List_of_dummy_names = ['BINARY_'+x for x in cv if search_String in x ]
#['BINARY_aword', 'BINARY_bword'] #filters the element having 'word' in them and prefixed with 'BINARY_'
Check if you need this (Cause i am confused about 'what you are looking for')
#df has only one column named 'col_to_replace'
col_to_replace
aword
bword
c
df['col_to_replace'] = ['BINARY_'+x if search_String in x else x for x in df['col_to_replace']]
#col_to_replace
BINARY_aword #prefixed
BINARY_bword #prefixed
c #word not found, so as it was
Now you got your new list of column names in a list.
List_of_dummy_names #['BINARY_aword', 'BINARY_bword']
#loop over it and create new columns in existing dataframe
for col_Name in List_of_dummy_names:
df[col_Name] = 'default_value_1' #it will create new column "BINARY_aword" and all the row_values as string 'default_value_1' for first loop and in 2nd loop new column "BINARY_aword" with all values as 'default_value_1'.
if you already have a values in a list with len(list) == len(df) then assign that list as df[col_Name] = list_of_values_having_same_length_as_DF