This is an interesting little problem that I've somehow never ran into before. I feel like I may be missing something obvious.
I think this image conveys my problem clearer:
One thing that I thought would work was to use int(), thinking that int("10") would give 10 but int("string") would give me NaN.. but int("string") actually returns the integer 0. So this can't be used as it would turn "Apple" into 0 and then claim it's a number.
Thanks for help
edit: solved it, I was missing something obvious, I just have to use the "is NaN" condition.