replace() 函数使用 Python3、pandas 数据框替换 int、字母数字、特殊字符

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

除 NO 列外的所有列(NAME、MARKS、CONTACT、MAILID、SSN)都应替换为 *(星号)。我如何使用 python 替换功能来实现。

Input:
NO,NAME,MARKS,CONTACT,MAILID,SSN
1,HENRY,89,9659651122,HENRY_99@GMA.COM,123-456-789
2,JOHN,88,8885566000,JOHN_88@ABC.COM,234-456-789
3,JACK,76,9988770099,JACK77@JAK.COM,345-678-901
4,MARY,85,4455889933,MARY22@MRY.COM,456-789-012
5,CLNT,77,5599886699,CLNT_33@CLT.COM,567-890-123

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

当我尝试下面的代码行时,它仅适用于字母数字列值,当我包含整数列(MARKS、CONTACT)时,它会失败并显示上述错误消息。如果可能,我如何使用一个循环将所有必需的列替换为 *(星号)。

代码:

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

错误: raise AttributeError("Can only use .str accessor with string values!") AttributeError:只能将 .str 访问器与字符串值一起使用!

使用dtype=object作为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)

输出:

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