Nonsense, if you understand why df[df.sh ==val] you'll see it's great. If you don't, you can also do df.query("sh == val").
But what are you saying, that typing wrong things you might get wrong results? Yes, coding is like that.
What's your point, make a point.