Have tried the above with no success. Note ..This is specific to the text Column Headings and not the Column Values
df.columns = [x.lower().replace(" ","").replace("?","").replace("_","").replace( "Â" , "") for x in df.columns]
Would have replaced the non-printable character but has failed.
Can anyone help ?

First of all, please remember that
replaceis case sensitive. Also, when chaining functions, the order is important.If the reason for the matter in question is a Mojibake encoding/decoding issue, you can try this quick fix with
ftfylibrary. You can use it in conjunction with therenamefunction.@tripleee is right, though. Maybe instead of quick fix you'd want to fix encoding/decoding errors in your source data.