Вы можете выбрать столбцы из DataFrame, возвращаемые filter
и кратные 100
:
df_1 = pd.DataFrame({
'A':list('abcdef'),
'FDR%':[4,5,4,5,5,4],
'C':[7,8,9,4,2,3],
'FCR%':[1,3,5,7,1,0],
'E':[5,3,6,9,2,4],
})
cols = df_1.filter(like='%').columns
df_1[cols] *= 100
print (df_1)
A FDR% C FCR% E
0 a 400 7 100 5
1 b 500 8 300 3
2 c 400 9 500 6
3 d 500 4 700 9
4 e 500 2 100 2
5 f 400 3 0 4
Или используйте маску с помощью Series.str.contains
или Series.str.endswith
и выберите столбцы с помощью DataFrame.loc
:
mask = df_1.columns.str.contains('%')
#alternative
#mask = df_1.columns.str.endswith('%')
df_1.loc[:, mask] *= 100
Примечание
apply
здесь для нескольких это плохой выбор, потому что петли под капотом, так медленно. Быстрое решение кратно только скаляру.