You can nest expressions to evaluate inside expressions in an f-string. This means you can move the ternary right inside your f-string:
string = f'I am {num:{".2f" if ppl else ""}}'
Note the additional pair of braces needed for nesting.
But I don’t think this is cleaner. Personally I find it harder to parse what’s going on here, as opposed to your clear original version. After all simple is better than complex; flat is better than nested.