Ways to differentiate comments in source code (PyCharm)
I think the major problem with this current system is this: Imagine you come back 6 month after having written these comments and have not used this commenting system elsewhere since then. What category does a comment like (4) ... belong to? Without looking it up! Now imagine someone else looks at your code and needs to figure out which comments are meant for them.

In other words, the system is not self explanatory.

(Ab)using multi-line strings as comments is also discouraged. You are not even using them as multi-line string anyway.

It would already help if you used words instead of numbers. Maybe this is already enough to cover all your cases:


# TODO NAME note to name or # FIXME important bugfix
# TODO TEAM note to team members,
# just plain comments for business rules
# CONSTANT description
# NOTE idea for improvement
# just plain comments on the flow of the code


At least in my editor, TODO, FIXME and NOTE all get the same special highlight.



Your code itself you should re-organize a bit. Ideally you define all your classes and functions first and put code calling it afterwards. Don't intersperse the two.

The definition of df can also be simplified a bit using extended indexing of pandas dataframes and pandas.DataFrame.rename:

df = SXRX_df[['Last Name', 'First Name', 'Student Id', 'School DBN', 'Cls', 'Section', 
 'Score.1']]
df = df.rename(columns={'Cls': 'Ofc Cls', 'Score.1': 'Final Score'})
df['Exam'] = 'SXRX'
df['Reason Incomplete'] = reason_incomplete(SXRX_df['Follow Up'],
                                            SXRX_df['Follow Up.1'],
                                            SXRX_df['Errors'])


Note that the columns are in the order in which they appeared in the list, so you might not even need the reindex.

The np.vectorize can also already be used as a decorator at the time of function definition and save some real estate in the block above:

@np.vectorize
def reason_incomplete(school_follow_up, site_follow_up, errors):
    ...