Function to perform checks on data
It seems difficult to comment on the meaningfulness of your proposed solution. You are the one to decide on that since you know the context around your problem. With that being said, I'm afraid there is not much to go on here.
Nevertheless, one observation I make about your code is that the checks use .loc to locate rows that receive a &quot;non-OK&quot;, and finally, after all checks, you use a fill to turn nans into &quot;OK&quot;. To make your code more concise and likely faster, consider using np.where. So for instance, your check_1 would be turned into:
df[&quot;check_1&quot;] = np.where(
   (df['Amount decided'] == 0) | (df['Amount decided'].isna()),
   &quot;Amount decided is 0 or NaN&quot;, &quot;OK&quot;)

Also, I would rename check_N into something that actually means a little more, like amount_check for check_1 and so on.