Что касается читабельности, правильный способ сделать это, вероятно, состоит в том, чтобы определить функцию и затем apply
ее в столбец size
, например,
def size2str(size):
if size < 25:
return 's'
elif 25 <= size < 40:
return 'm'
else:
return 'l'
df['size_str'] = df['size'].apply(size2str)