'replace() function to replace int, alphanumeric, special chars using Python3, pandas data frame

All columns (NAME,MARKS,CONTACT,MAILID,SSN) except NO column should be replaced with * (stars). How can I achieve using python replace function.

Input:
NO,NAME,MARKS,CONTACT,MAILID,SSN
1,HENRY,89,9659651122,[email protected],123-456-789
2,JOHN,88,8885566000,[email protected],234-456-789
3,JACK,76,9988770099,[email protected],345-678-901
4,MARY,85,4455889933,[email protected],456-789-012
5,CLNT,77,5599886699,[email protected],567-890-123

Output:
NO,NAME,MARKS,CONTACT,MAILID,SSN
1,*****,**,**********,*****_**@***.***,***-***-***
2,****,**,**********,****_**@***.***,***-***-***
3,****,**,**********,******@***.***,***-***-***
4,****,**,**********,******@***.***,***-***-***
5,****,**,**********,****_**@***.***,***-***-***

When I try below line of code, it is working only for Alphanumeric column values, when I include integer columns (MARKS,CONTACT) it is failing with the mentioned error message. How can i replace all required columns with a * (star) using one loop if possible.

Code:

df = pd.read_csv("input.csv")
for col in ['NAME','MARKS','CONTACT','MAILID','SSN']:
    df[col] = df[col].str.replace('[a-zA-Z0-9]','*')

Error: raise AttributeError("Can only use .str accessor with string values!") AttributeError: Can only use .str accessor with string values!



Solution 1:[1]

Use dtype=object as parameter of read_csv:

cols = ['NAME', 'MARKS', 'CONTACT', 'MAILID', 'SSN']
df = pd.read_csv('input.csv', dtype=object)
df[cols] = df[cols].replace(r'[a-zA-Z0-9]', '*', regex=True)
df.to_csv('output.csv', index=False)

Output:

NO,NAME,MARKS,CONTACT,MAILID,SSN
1,*****,**,**********,*****_**@***.***,***-***-***
2,****,**,**********,****_**@***.***,***-***-***
3,****,**,**********,******@***.***,***-***-***
4,****,**,**********,******@***.***,***-***-***
5,****,**,**********,****_**@***.***,***-***-***

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Corralien